在infowindow点击获取位置的placeid

时间:2016-12-23 07:46:41

标签: android google-maps google-maps-markers google-places-api google-maps-android-api-2

当用户点击标记的信息窗口时,有没有办法获取某个位置的placeID?我创建了一个搜索附近地方的应用程序(例如医院)。我想要做的是通过点击infowindow来获取某个位置的placeid,这样我就可以获得某个地方的详细信息。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

虽然添加标记会存储地点ID(如果您正在使用json / xml响应),但在这样的标记的snipet中,

marker.setSnippet(placeId);

然后点击infowindow从Marker对象获取它

onInfowindowClick(Marker marker){
int placeId = marker.getSnippet();
//now you can use it to call anyother service call
}

但我的问题是你得到了地方ID,因为你的问题不清楚

enter image description here

看到它突出显示的部分,看看你是否可以使用它,我不确定,抱歉

如果它是可以的,你需要解析json响应以获得id

的值

答案 1 :(得分:0)

你必须创建一个这样的标记:

Marker marker = mMap.addMarker(new MarkerOptions()
                        .position(new LatLng(40.714224, -73.961452))
                        .title("Title")
                        .snippet("Description")
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)));
                marker.setTag("PlaceId");

然后:

Marker markerClicked;
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                    @Override
                    public boolean onMarkerClick(Marker marker) {
                        // Retrieve the data from the marker.
                        String clickTag = (String) marker.getTag();


                        if (clickTag != null) {
                        // do something
                            Toast.makeText(MainActivity.this, marker.getTitle() + " è stato cliccato. Tag: " + clickTag + ".", Toast.LENGTH_SHORT).show();
                            markerClicked= marker;
                        }
                        return false;
                    }
                });

googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                    @Override
                    public void onInfoWindowClick(Marker marker) {
                      Double lat= marker.getPosition().latitude; // 40.714224
                      Double longit= marker.getPosition().longitude;  // -73.961452
// and then call this url:
// "http://maps.google.com/maps/api/geocode/json?latlng=40.714224,-73.961452"
                    }
                });

P.s。:private GoogleMap googleMap;是一个活动字段,设置为GoogleMap mMap,您可以在

中找到
MapView mMapView.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap mMap) {
                googleMap = mMap;
                 ...
                 }