如何永久更改应用程序标记的行为?

How to permanently change behavior of markers for app?

我想做到这一点,以便当用户在 google 地图中创建标记时,可以双击(或按住或其他方式)并调出新的 Activity .现在我有了它,所以我可以在地图上手动创建一个标记并使用 onMarkerClickListener 等待直到单击标记以启动新的 activity。基本上,我想让所有在我的应用程序中创建的标记都共享此行为,并且我需要某种检查来区分我自己的用户标记和 Google/external 标记。

下面是代码:

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;
        }
    });
}

您可以在 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>();

在您的应用中添加 Marker 时,捕获返回的 Marker,获取 ID,并将 ID 添加到 Set 中:

    //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 是否在集合中 Activity:

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;
            }
        });
    }