我想这样做,以便当用户在谷歌地图中创建标记时,可以双击(或保持或某事物)并调出新的活动。现在我拥有它,以便我手动在地图上创建一个标记,并使用onMarkerClickListener
等待标记点击以启动新活动。基本上,我想这样做,以便在我的应用程序中创建的所有标记共享此行为,我需要某种检查来区分我自己的用户标记和Google /外部标记。
以下是代码:
public void setUsermarker() {
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if (marker.equals(userMarker)) { //if clicked marker equals marker created by user
Intent intent = new Intent(MapsActivity.this, ObjectViewActivity.class);
startActivity(intent);
} //Otherwise just show the info window
return false;
}
});
}
答案 0 :(得分:1)
您可以在Set<String>
中添加您明确添加到地图中的每个标记的ID,以便将它们与地图上的其他标记区分开来。
文档:https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker#getId()
//instance variables:
LatLng latLng;
String title;
String snippet;
Set<String> markerIDs = new HashSet<String>();
在您的应用中添加标记时,捕获返回的标记,获取ID,并将ID添加到集:
//Adding your markers
Marker marker = mMap.addMarker(new MarkerOptions().position(latLng)
.title(title)
.snippet(snippet));
//Add each ID to the Set
String id = marker.getId();
markerIDs.add(id);
然后,在启动另一个活动之前,检查标记ID是否在Set中:
public void setUsermarker() {
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if (markerIDs.contains(marker.getId())) { //if clicked marker equals marker created by user
Intent intent = new Intent(MapsActivity.this, ObjectViewActivity.class);
startActivity(intent);
} //Otherwise just show the info window
return false;
}
});
}