当用户点击标记的信息窗口时,有没有办法获取某个位置的placeID?我创建了一个搜索附近地方的应用程序(例如医院)。我想要做的是通过点击infowindow来获取某个位置的placeid,这样我就可以获得某个地方的详细信息。任何帮助,将不胜感激。谢谢!
答案 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,因为你的问题不清楚
看到它突出显示的部分,看看你是否可以使用它,我不确定,抱歉
如果它是可以的,你需要解析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;
...
}