Android _ 如何获取标记在 google 地图 v2 上的位置并将其与 Latlng 数组匹配
Android _ How to get the position of marker on google map v2 and match it to the array of Latlng
大家好,我是 google 地图 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;
}
});
任何帮助请...
据我所知,他们不是那样定位的。你必须自己处理。如果你确定你只想根据创建顺序获取索引,你可以这样做:
使用 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> ...
在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;
}
});
大家好,我是 google 地图 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;
}
});
任何帮助请...
据我所知,他们不是那样定位的。你必须自己处理。如果你确定你只想根据创建顺序获取索引,你可以这样做:
使用 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> ...
在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;
}
});