需要在点击时从 Google 地图标记中检索字符串

Need to Retrieve a string from a Google Maps Marker on tap

在我的应用程序中,我有一个 googlePlaceDetails 对象列表(定制的 class),我用它在 google 地图片段上绘制了一堆标记。

这是 google地点详情 class:

public class googlePlaceDetails {

    String googlePlaceID;
    String placeName;    
    String placeAddress;    
    String rating;    
    String lat;
    String lng;    
}

这就是我在地图上填充标记的方式。

List<googlePlaceDetails> output = //* populate the list here *//

for (int i=0; i< output.size() ; i++)
    {
        googlePlaceDetails place = output.get(i);

        double placeLat = Double.parseDouble(place.lat);
        double placeLng = Double.parseDouble(place.lng);

        mMap.addMarker(new MarkerOptions()
                .position(new LatLng(placeLat, placeLng))
                .title(place.placeName)
                .snippet(place.placeAddress)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.mapmarker_red)));

    }

现在我的应用程序中有一个 "View Place Details" 按钮。用户点击标记 select 地标,然后点击此 "View Place Details" 按钮启动新的 activity,他可以在其中查看详细数据。

这就是我捕获标记点击的方式。

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            String placename = marker.getTitle();
            String placeAddress = marker.getSnippet();

            return false;
        }
    });

我能够检索地名和地址,因为我在添加它们时在标记的 TitleSnippet 属性中提供了它们。

我的问题是,如何在填充标记时在标记中提供 googlePlaceID 字符串值,以便在用户点击标记时检索相同值?如果不可能,那么有什么解决方法?

private Map<Marker, YourClass> hash = new HashMap<Marker, YourClass>();

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            String placename = marker.getTitle();
            String placeAddress = marker.getSnippet();

            YourClass object = hash.get(marker);
            object.****

            return false;
        }
    });

我有个想法

定义

 private Map<LatLng, String> marker = new HashMap();

现在修改这个功能

for (int i=0; i< output.size() ; i++)
    {
        googlePlaceDetails place = output.get(i);

        double placeLat = Double.parseDouble(place.lat);
        double placeLng = Double.parseDouble(place.lng);

        mMap.addMarker(new MarkerOptions()
                .position(new LatLng(placeLat, placeLng))
                .title(place.placeName)
                .snippet(place.placeAddress)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.mapmarker_red)));
        marker.put(yourlatlng,"string");

    }

现在在marker click中可以通过解析HashMap获取值

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            String placename = marker.getTitle();
            String placeAddress = marker.getSnippet();

            /// iterate your map

            return false;
        }
    });

根据自己的情况修改requirement.Maybe对大家有帮助