【发布时间】:2020-08-15 01:04:04
【问题描述】:
我正在研究谷歌地图多边形标记,我已经预定义了纬度/长数组,并且需要设置多边形区域,这对我来说工作正常,但是当我拖动标记多边形线时不会改变,它应该有拖动标记时进行更改。
这是我的问题,我会放一张图来说明它更容易。
这里是代码:
myMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
}
@Override
public void onMarkerDrag(Marker marker) {
updateMarkerLocation(marker);
drawPolygon(coordinates);
}
private void updateMarkerLocation(Marker marker) {
LatLng latLng = (LatLng) marker.getTag();
int position = coordinates.indexOf(latLng);
if (position >= 0) {
coordinates.set(position, marker.getPosition());
marker.setTag(marker.getPosition());
}
}
@Override
public void onMarkerDragEnd(Marker marker) {
}
});
}
private void drawPolygon(List<LatLng> coordinates) {
if (polygon != null) {
polygon.remove();
}
PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.fillColor(Color.GREEN);
polygonOptions.strokeColor(Color.GREEN);
polygonOptions.strokeWidth(3);
polygonOptions.addAll(coordinates);
polygon = myMap.addPolygon(polygonOptions);
}
如上图所示,我的标记移动但不生成多边形。
坐标包含来自 sqlite 的多边形坐标
【问题讨论】:
-
请添加完整的错误堆栈跟踪。
-
在
updateMarkerLocation中,如果markerlist不包含latLng,那么position将为-1。下一行markerlist.set(position, marker.getPosition());将抛出一个ArrayIndexOutOfBoundsException。也许添加一个检查position >= 0,或者如果这不应该发生追溯以确定原因。 -
@SirRaffleBuffle ` if (position >= 0) { markerlist.set(position, marker.getPosition()); marker.setTag(marker.getPosition());` 我现在像这样更新我的代码,错误消失了,但是当我拖动我的点时它完美地拖动但我无法制作多边形
-
@BlackCoder 你找到答案了吗?
-
@shivanipatil No
标签: java android-studio google-maps google-maps-markers polygon