【问题标题】:Get placeid of a location on infowindow click获取信息窗口点击位置的placeid
【发布时间】:2017-05-08 21:55:56
【问题描述】:

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

【问题讨论】:

  • google places api 是否返回了地方 id 作为响应?
  • 看这个androidtrainee.com/…它有一个解析附近地方数据的详细方法
  • @rafsanahmad007 我试图遵循该代码。请查看我的其他帖子,我真的无法显示机构的电话号码
  • 给我你其他帖子的链接..

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


【解决方案1】:

在添加标记存储位置 id 时(如果您在 json/xml 响应中获得),在这样的标记片段中,

marker.setSnippet(placeId);

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

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

但我的问题是您是否获得了地点 ID,因为您的问题并不清楚

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

如果可用,则需要解析json响应以获取id的值

【讨论】:

  • 如何从 JSON 文件中获取 placeid?
【解决方案2】:

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

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;是 Activity 的一个字段,设置类似于GoogleMap mMap,您可以在

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多