如何将自定义标记放置在Polygon Google maps Android的顶部

时间:2016-12-07 05:27:39

标签: android google-maps

我只想将自定义的气泡类型标记放在多边形的顶部,并在其上显示相同的文字,当多边形可见时,它应该显示,当多边形消失时,它不应该显示在地图中。请帮我说明如何我可以将自定义标记放在多边形的顶部。

{{1}}

请指导。

1 个答案:

答案 0 :(得分:1)

您可以将Marker放在Polygon

的质心上
List<LatLng> coordinateList = new ArrayList<>();
Polygon polygon;
Marker marker;

coordinateList.add(new LatLng(19.216157, 72.920643));
coordinateList.add(new LatLng(19.207537, 73.091977));
coordinateList.add(new LatLng(19.012896, 73.012326));
coordinateList.add(new LatLng(19.036265, 72.872251));

PolygonOptions rectOptions = new PolygonOptions();
rectOptions.addAll(coordinateList);
rectOptions.strokeColor(Color.parseColor("#80FFFFFF"));
rectOptions.strokeWidth(0);
rectOptions.fillColor(Color.parseColor("#80ffb3ff"));
polygon = mMap.addPolygon(rectOptions);
polygon.setVisible(true);

LatLng centroid = findCentroid(coordinateList);

IconGenerator generator = new IconGenerator(this);
MarkerOptions markerOptions = new MarkerOptions().
        icon(BitmapDescriptorFactory.fromBitmap(generator.makeIcon("Title"))).
        position(centroid).
        anchor(generator.getAnchorU(), generator.getAnchorV());
marker = mMap.addMarker(markerOptions);

以下是查找质心的方法

private LatLng findCentroid (List<LatLng> coordinates) {
    double latitude = 0;
    double longitude = 0;

    for (LatLng coordinate : coordinates) {
        latitude += coordinate.latitude;
        longitude += coordinate.longitude;
    }

    return new LatLng(latitude/coordinates.size(), longitude/coordinates.size());
}

然后,您只需要同时显示PolygonMarker polygon.setVisible(false); marker.setVisible(false);

{{1}}