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;
                }
            });