如何永久改变app的标记行为?

时间:2015-06-17 15:40:48

标签: android google-maps marker

我想这样做,以便当用户在谷歌地图中创建标记时,可以双击(或保持或某事物)并调出新的活动。现在我拥有它,以便我手动在地图上创建一个标记,并使用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;
        }
    });
}

1 个答案:

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