如何处理Google Map标记点击?

时间:2017-10-04 06:30:47

标签: android xamarin xamarin.android maps

我使用数据库动态创建了多个标记的Google Map,现在有人可以建议我如何单独创建每个标记的点击事件吗?

5 个答案:

答案 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正确标记它。