Java Android uu如何在google map v2上获得标记的位置并将其与Latlng数组匹配
大家好,我是谷歌地图API的新手,我有一个在地图上添加标记的LatLng对象列表Java Android uu如何在google map v2上获得标记的位置并将其与Latlng数组匹配,java,android,api,google-maps,marker,Java,Android,Api,Google Maps,Marker,大家好,我是谷歌地图API的新手,我有一个在地图上添加标记的LatLng对象列表 for (LatLng location : camerasLocations) { googleMap.addMarker(new MarkerOptions() .position(location).icon(icon)
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<>();
然后可以通过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> ...
地图。。。
在谷歌地图中添加标记时,首先需要将位置设置为标记上的标记
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;
}
});
for(int i=0,i>”+Marker.getTag(),Toast.LENGTH\u SHORT.show();
返回false;
}
});
我不知道我是否理解正确,如果没有,请进一步解释您的问题。我得到的是-你有一些LatLng对象的列表,你正在基于它们创建你的标记。当用户单击某个标记时,您想知道该标记在创建顺序中的位置吗?例如,若用户单击最初创建的标记,您希望得到0、2->1、3->2等?是的,当您在listView中单击项时,它返回该项在listindex变量上的位置。当我单击每个标记时,返回0。不抱歉,这是我的错,返回正确的索引,但是我想把映射上的整数赋给我从中获取latLng对象的原始数组(它是JSON中的数组,包含其他属性,然后是lat long值,如id、name、time),如何将索引赋给该数组,以获取映射上的名称和id??Integer?我不明白。查看循环“for(LatLng位置:camerasLocations)”,您的阵列只包含LatLng。或者你说的是“摄影师”?请提供更多信息,如“j”是什么。正如我在回答中所写的那样,你可以用列表中的对象映射标记,这将是更干净、更好的解决方案。就像地图一样,当用户点击一个标记时,你可以获得相关的对象,并获得它的名称、时间等。是的,我说的是cameralist,它是我从web服务检索到的一个数组保持摄影机对象,它具有比纬度和经度更多的属性,我可以从中创建摄影机位置标记,如:名称、id、速度、时间。我想在单击标记时获取名称和id,你可以告诉我如何获取它的位置,我尝试了你所说的映射,但它始终给我0值我通过分配映射的索引从列表中获取值来解决,如:cameraList.get(index).getID() ;............ cameraList.get(index.getName()。。。。。。。。。。。谢谢你的帮助:)两年前我写了这个问题,现在我面临着同样的问题,当我用谷歌搜索时,我的问题出现了,我尝试了你的解决方案,非常简单和完美非常感谢
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;
}
});