我目前正在尝试为我的Android应用添加多个标记。这非常完美。我唯一被困住的事实是我不能在多个标记上绑定多个“onInfoWindowClick”。
例如,如果我喜欢:
for (int i = 0; i < randomList; i++) {
MarkerOptions marker = new MarkerOptions().position(latlng).title(MainActivity.list.get(i).aMessage);
// adding marker
googleMap.addMarker(marker);
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
// Do something onclick
}
});
}
这会导致每个标记的infowindowclick工作正常,但我总是在“//做某事onclick”内部得到相同的数据,这是因为最后一个标记被设置为此事件。
将此事件附加到多个标记的步骤是什么?
答案 0 :(得分:0)
在每个循环上创建一个新的Marker
并执行方法:showInfoWindow()
;
for (int i = 0; i < randomList; i++) {
// MarkerOptions marker = new MarkerOptions().position(latlng).title(MainActivity.list.get(i).aMessage);
// adding marker
// googleMap.addMarker(marker);
googleMap.addMarker(new MarkerOptions().position(latlng).title(MainActivity.list.get(i).aMessage)).showInfoWindow();
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
// Do something onclick
}
});
}
顺便设置相同的latlng
值!
答案 1 :(得分:0)
你不应该在循环中调用setOnInfoWindowClickListener()
,这只需要调用一次,它将适用于所有标记。
传递到onInfoWindowClick(Marker marker)
的Marker对象将始终是刚刚单击的Marker。
所以,把它拿出来。接下来,为了弄清楚Marker刚刚点击了什么,您可以获得Marker的标题,并遍历您的列表,直到找到具有与{Marker's title'对应的aMessage
值的列表项。 / p>
请注意,您还可以通过调用marker.getPosition();
按位置识别当前标记。
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
//get location of Marker that was just clicked
LatLng latLon = marker.getPosition();
// get the title of Marker that was just clicked
String title = marker.getTitle();
//find item in the list that corresponds to currently clicked Marker
for (int i = 0; i < MainActivity.this.list.size(); i++){
if (title.equals(MainActivity.this.list.get(i).aMessage)){
//found current list item corresponding to
//the Marker that was just clicked!
}
}
}
});
for (int i = 0; i < randomList; i++) {
MarkerOptions marker = new MarkerOptions().position(latlng).title(MainActivity.this.list.get(i).aMessage);
// adding marker
googleMap.addMarker(marker);
}
我回答了一个类似的问题here,您可能会发现它也很有帮助。