Android _如何在Google地图v2上获取标记的位置,并将其与Latlng

时间:2017-02-26 13:54:16

标签: java android api google-maps marker

大家好,我是新处理谷歌地图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;
                                        }
                                    });

任何帮助请...

2 个答案:

答案 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> ...