首先,我创建了Arraylist,我放置了所有标记。
markerArrayList = new ArrayList<Marker>();
marker1 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(51.1117744, 17.0353596))
.title("Giselle French Bakery Cafe")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
marker1.setDraggable(false);
marker1.setTag(0);
marker2 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(51.110969, 17.031510))
.title("Second Bakery Cafe")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
marker2.setDraggable(false);
marker2.setTag(1);
markerArrayList.add(marker1);
markerArrayList.add(marker2);
接下来我在地图上使用了LongClickListener,并尝试检查点击了哪一个:
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng latLng) {
for (Marker marker : markerArrayList) {
if (Math.abs(marker.getPosition().latitude - latLng.latitude) < 0.005
&& Math.abs(marker.getPosition().longitude - latLng.longitude) < 0.005) {
onMarkerLongClick(marker);
break;
}
}
}
});
但问题是,无论我在地图上长时间点击使用,它总是从arraylit中选择第一行。
答案 0 :(得分:0)
您的标记比onMapLongClick(...)
中检查的差异更接近,这会留下一个非常小的差异窗口。尝试从0.005
减少到0.00005
或将第一个标记从第二个标记移开(尝试检查这些坐标:LatLng(51.15, 17.00)
)。
答案 1 :(得分:0)
在检查了一些解决方案之后,如果标记设置得非常接近,我找到了最佳答案。
以下是应该正常运行的代码片段
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng latLng) {
for (Marker marker : markerArrayList) {
if (Math.abs(marker.getPosition().latitude - latLng.latitude) < 0.001
&& Math.abs(marker.getPosition().longitude - latLng.longitude) < 0.001) {
onMarkerLongClick(marker);
break;
}
}
}
});