我已经创建了一个循环来创建多个标记,但是 onInfoWindowClickListener 适用于具有一个参数的所有标记
for ( i = 0; i < MyArrListx.size(); i++) {
n = Double.parseDouble(MyArrListx.get(i));
e = Double.parseDouble(MyArrListy.get(i));
final String phone = (MyArrListphonenumber.get(i));
map.addMarker(new MarkerOptions().position(new LatLng(n, e)) .title("Click to Call Transporter !!").snippet( phone )
.position(new LatLng(n, e)))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker.getSnippet().equals(phone)) // if marker source is clicked
dialContactPhone(phone);
}
});
它仅调用第一个标记 fragment 的编号,所有标记都及时包含每个 fragment 包含不同的编号。
最佳答案
调用setOnInfoWindowClickListener()
在循环之外, map 只有一个 InfoWindowClickListener,它用于所有标记。
然后,只需从 OnInfoWindowClickListener
中的代码段中获取电话号码.
这应该足以满足您的需求:
for ( i = 0; i < MyArrListx.size(); i++) {
n = Double.parseDouble(MyArrListx.get(i));
e = Double.parseDouble(MyArrListy.get(i));
String phone = (MyArrListphonenumber.get(i));
map.addMarker(new MarkerOptions().position(new LatLng(n, e))
.title("Click to Call Transporter !!").snippet( phone )
.position(new LatLng(n, e)))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
}
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
//Just get the phone number stored in the snippet, and dial
String phone = marker.getSnippet();
dialContactPhone(phone);
}
});
注意,如果你需要做一些比你可以存储在 Title 和 Snippet 中更复杂的事情,那么使用 HashMap 来存储你的数据,并使用 Marker ID 作为 HashMap 的键,请参阅此处了解更多信息:
https://stackoverflow.com/a/30602617/4409409
关于java - oninfowindowclick 仅在有多个标记的情况下与标记信息一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37357445/