需要在点击时从 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;
}
});
我能够检索地名和地址,因为我在添加它们时在标记的 Title
和 Snippet
属性中提供了它们。
我的问题是,如何在填充标记时在标记中提供 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对大家有帮助
在我的应用程序中,我有一个 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;
}
});
我能够检索地名和地址,因为我在添加它们时在标记的 Title
和 Snippet
属性中提供了它们。
我的问题是,如何在填充标记时在标记中提供 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对大家有帮助