Android - 如何创建标记以便某些标记可​​点击而某些标记不可用?

时间:2018-04-05 22:00:03

标签: android google-maps

在Google地图上创建标记的最佳方法是什么,例如,可以点击一个标记来显示信息窗口而另一个标记不允许点击?

1 个答案:

答案 0 :(得分:1)

一种方法是使用onMarkerClick(Marker) callback来决定是否使用事件(返回true)或允许默认行为,包括信息窗口(返回false)。

使用事件(返回true)可以有效地禁用单击行为 点击的那个标记;否则返回false会产生默认值" click"行为,包括信息窗口。

是否返回true(消耗)或false(默认)的决定将基于您的具体实现。

但为了便于说明,我们假设您添加了一个标记"标记"添加标记并使用它来做出决定时,每个标记(或只是您不想点击的标记)...

    // Where you add markers
    Marker clickable = mMap.addMarker(
            new MarkerOptions().position(new LatLng(-33.87364,151.20689))
                               .title("Clickable"));
    clickable.setTag(false);

    Marker notClickable = mMap.addMarker(
            new MarkerOptions().position(new LatLng(-27.47093, 153.0235))
                               .title("Not Clickable"));
    notClickable.setTag(true);

    // This marker has no tag and therefore is handled in same manner as
    // false (default behavior).
    Marker anotherClickable = mMap.addMarker(
            new MarkerOptions().position(new LatLng(-30.47093, 153.0235))
                               .title("Clickable 2"));


    // For simplicity an anonymous marker click listener is specified.
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

        // Return true if the click event is consumed (and therefore no
        // info window is displayed) or false to produce default behavior.

        public boolean onMarkerClick(final Marker marker) {

            // Note that markers that have no tag (getTag() == null) get the
            //  default ("clickable") behavior

            return (marker != null && marker.getTag() != null && ((Boolean)marker.getTag()).booleanValue());
        }
    });