【发布时间】:2018-09-09 12:59:44
【问题描述】:
i 通过长按事件创建了 3 个标记,因此它创建了多边形。如果我尝试拖动第一个标记,它需要显示从 2 到 3 的折线。但它会创建内部点并从病房上的该点显示折线。
如果我拖动 1 个标记,我需要从 2 到 3 的折线。 如果我拖动 2 个标记,我需要从 1 到 3 的折线。 如果我拖动 3 个标记,我需要从 1 到 2 的折线。
我的代码:
map.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng latLng) {
String id = Utils.generateRandomNumber() + "";
arrayListLatLngs.add(createMapPolygonData(latLng, id));
map.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.title(arrayListLatLngs.size() + "")
.snippet(id)
.draggable(true));
if (arrayListLatLngs.size() > 1) {
if (polygon != null) {
polygon.remove();
polygon = null;
}
polygonOptions.add(latLng);
polygonOptions.strokeColor(Color.RED);
polygonOptions.fillColor(Color.parseColor("#40000000"));
polygon = map.addPolygon(polygonOptions);
} else {
polygonOptions = new PolygonOptions().add(latLng);
}
}
});
map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
AlertUtils.showLog("marker", "onMarkerDragEnd" + " marker id : " + marker.getTitle());
}
@Override
public void onMarkerDrag(Marker marker) {
AlertUtils.showLog("marker", "onMarkerDrag" + " marker id : " + marker.getTitle());
if (arrayListLatLngs.size() > 1) {
for (int i = 0; i < arrayListLatLngs.size(); i++) {
MapPolygonData mapData = arrayListLatLngs.get(i);
AlertUtils.showLog("marker", "mapData" + " marker id : " + mapData.id);
if (marker.getSnippet().equals(mapData.id)) {
mapData.latitude = marker.getPosition().latitude;
mapData.longitude = marker.getPosition().longitude;
mapData.latLng = marker.getPosition();
arrayListLatLngs.set(i, mapData);
if (arrayListLatLngs.size() > 1) {
if (polygon != null) {
polygon.remove();
polygon = null;
}
polygonOptions.add(marker.getPosition());
polygonOptions.strokeColor(Color.RED);
polygonOptions.fillColor(Color.parseColor("#40000000"));
polygon = map.addPolygon(polygonOptions);
mapData.polygon=polygon;
arrayListLatLngs.set(i, mapData);
} /*else {
polygonOptions = new PolygonOptions().add(marker.getPosition());
}*/
break;
}
}
}
}
private MapPolygonData createMapPolygonData(LatLng latLng, String id) {
MapPolygonData mapData = null;
try {
mapData = new MapPolygonData();
mapData.id = id;
mapData.latitude = latLng.latitude;
mapData.longitude = latLng.longitude;
mapData.latLng = latLng;
mapData.title = id;
mapData.snippet = id;
} catch (Exception e) {
e.printStackTrace();
}
return mapData;
}
【问题讨论】:
-
你能显示问题的图片吗,我不明白你要描述的问题是什么
-
请检查图片..
标签: android google-maps android-maps-v2