我使用数据库动态创建了多个标记的Google Map,现在有人可以建议我如何单独创建每个标记的点击事件吗?
答案 0 :(得分:1)
你可以这样做
private Marker marker1;
marker1 = mMap.addMarker(new MarkerOptions()
.position(LatLng(-31.952854, 115.857342))
.title("Title");
marker1.setTag(0);
mMap.setOnMarkerClickListener(this);
并且在监听器的实现中
@Override
public boolean onMarkerClick(final Marker marker) {
//marker.getTag()
}
答案 1 :(得分:0)
将此用于多个标记:
首先让你的应用实现GoogleMap.OnMarkerClickListener然后创建一个Marker数组:
Marker[] marker = new Marker[20]; //change length of array according to you
然后在里面
onMapReady(){
mMap.setOnMarkerClickListener(this);
for(int i = 0 ; i < yourMarkerListsize ; i++ ) {
marker[i] = mMap.addMarker(new MarkerOptions()
.position(new LatLng(list(i).getLat(), list(i).getLon())
.anchor(0.5f, 0.5f)
.title(title)
.snippet(snippet)
.icon(yourIcon));
}
然后终于
@Override
public boolean onMarkerClick(Marker marker) {
//you can get assests of the clicked marker
return false;
}
希望它有所帮助!!!
答案 2 :(得分:0)
如果您正在寻找Xamarin代码,请按以下步骤操作
/api/oauth/token
这就是你如何处理xamarin Android中的标记和标记信息窗口点击事件希望这对你有帮助。
答案 3 :(得分:0)
我认为以下方法可以帮助您:
正如其他人所说,您可以为标记设置OnMarkerClickListener
,在标记点击上执行活动并使用网址添加启动活动,请参阅here。
因此,您也可以将活动URL存储在DB中。
动态创建标记时,请维护一个Map,其键将是Marker
类的对象,Value将为String
URL。
所以,在onMarkerClick()
方法内:
@Override
public boolean onMarkerClick(Marker marker) {
String activityUrl = markerURLMap.get(marker);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(activityUrl));
startActivity(intent);
}
答案 4 :(得分:0)
要为每个标记点击附加唯一网址,您需要附加在Marker.Tag中标记的对象,如下所示:
UrlObject url = new UrlObject()
{
Url = "enteryoururlhere"
};
marker.Tag = UrlObject;
然后,您可以通过调用以下内容获取每个标记唯一的URL:
public boolean onMarkerClick(Marker marker) {
UrlObject obj = marker.Tag;
String activityUrl = obj.Url;
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(activityUrl));
startActivity(intent);
}
您的UrlObject类很容易设置:
class UrlObject : Java.Lang.Object
{
public string Url { get; set; }
}
编辑:您可以为循环中的每个标记创建一个标记。这样,当创建每个标记时,使用每个URL正确标记它。