我只想将自定义的气泡类型标记放在多边形的顶部,并在其上显示相同的文字,当多边形可见时,它应该显示,当多边形消失时,它不应该显示在地图中。请帮我说明如何我可以将自定义标记放在多边形的顶部。
{{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());
}
然后,您只需要同时显示Polygon
和Marker
polygon.setVisible(false);
marker.setVisible(false);
:
{{1}}