大家好,我是新处理谷歌地图API的,我有一个在地图上添加标记的LatLng对象列表。
for (LatLng location : camerasLocations) {
googleMap.addMarker(new MarkerOptions()
.position(location).icon(icon)
.title(cameraList.get(j).getName()));
}
当我点击标记时,我想知道标记在该数组上的位置:
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
showDialog(getActivity(), "");
return false;
}
});
任何帮助请...
答案 0 :(得分:1)
首先,您需要在Google地图中添加标记时将标记位置设置为标记
for(int i = 0, i < camerasLocations.size(), i++){
Marker marker = googleMap.addMarker(new MarkerOptions()
.position(location).icon(icon)
.title(cameraList.get(j).getName()))
.setTag(i);
}
And then you can obtain this marker position in the onclick method using getTag() method :
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(this, "Marker position >> " + marker.getTag(), Toast.LENGTH_SHORT).show();
return false;
}
});
答案 1 :(得分:0)
据我所知,他们并没有这样定位。你必须自己处理它。如果您确定只想根据创建顺序获取索引,可以这样做:
使用Map创建私有字段,用于存储该信息
//class field
private Map<Marker, Integer> markersOrderNumbers = new HashMap<>();
之后,填充它
//Your method
int markerIndex = 0;
for (LatLng location : camerasLocations) {
Marker marker = googleMap.addMarker(new MarkerOptions()
.position(location).icon(icon)
.title(cameraList.get(j).getName()));
markersOrderNumbers.put(marker,markerIndex);
markerIndex++;
}
然后你可以在onclick方法中获得这个索引号
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Integer index = markersOrderNumbers.get(marker);
//Do whatever you want to
showDialog(getActivity(), "");
return false;
}
});
我可能会补充一点,如果您当然不关注索引本身,而是关注使用该ID获得的某些信息,您可以使用提供的方法在第一时间将标记与所需信息进行映射,如:
Map<Marker, Whatever> ...