在Google地图上制作可点击的多边形(适用于Android)

9
我有一个城市不同区域的连续经纬度数据。有没有办法用它创建可点击的多边形?一种方法是:
  • 使用可用的LatLng生成多边形。(我想在地图上用颜色编码显示多边形)
  • 设置setOnMapClickListener
  • 进行点在多边形内的测试。
我知道这很幼稚。还有其他替代方法吗?
3个回答

12

我是这样做的。

    Polygon polygon = getMap().addPolygon(new PolygonOptions()
                    .add(new LatLng(12.780712, 77.770956), new LatLng(12.912006, 77.229738), new LatLng(12.412006, 77.629738), new LatLng(12.912006, 77.229738))
                    .strokeColor(0xFF00AA00)
                    .fillColor(0x2200FFFF)
                    .strokeWidth(2)
    );


    polygon.setClickable(true);

    getMap().setOnPolygonClickListener(new GoogleMap.OnPolygonClickListener() {
        public void onPolygonClick(Polygon polygon) {

            mClusterManager = new ClusterManager<MyItem>(getApplicationContext(), getMap());
            getMap().setOnCameraChangeListener(mClusterManager);
            getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(getMap().getCameraPosition().target, getMap().getCameraPosition().zoom));

            try {
                readItems();
            } catch (JSONException e) {
                Toast.makeText(getApplicationContext(), "Problem reading list of markers.", Toast.LENGTH_LONG).show();
            }

        }
    });
希望这有所帮助。

谢谢!如何将自定义对象附加到多边形? - NoWar

7

您不需要为了实现可点击的多边形而烦恼。我曾经这样做过,但现在已经有一个 API 可以实现:

GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)

您可以轻松地使用它:

GoogleMap mymap =....//init your map
mymap.setOnPolygonClickListener(new OnPolygonClickListener(){
 void onPolygonClick(Polygon polygon){
   //do whatever with polygon!
 }
});

1
绝对是最好的答案。 - Bay

3

在地图上添加多边形。首先创建一个PolygonOptions对象并向其中添加一些点。这些点将形成多边形的轮廓线。然后通过调用GoogleMap.addPolygon(PolygonOptions)将多边形添加到地图中,该方法将返回一个Polygon对象。 以下代码片段展示了如何向地图添加多边形。

// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions rectOptions = new PolygonOptions()
              .add(new LatLng(37.35, -122.0),
                   new LatLng(37.45, -122.0),
                   new LatLng(37.45, -122.2),
                   new LatLng(37.35, -122.2),
                   new LatLng(37.35, -122.0));

// Get back the mutable Polygon Polygon polygon = myMap.addPolygon(rectOptions);

默认情况下,多边形不可点击。您可以通过调用Polygon.setClickable(boolean)来启用和禁用可点击性。

N Dorigatti所说的那样,在使用OnPolygonClickListener监听单击事件时,请调用GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)

当用户单击多边形时,您将收到一个onPolygonClick(Polygon)回调。 有关更多信息,请参阅此文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接