在Google地图上创建标记的最佳方法是什么,例如,可以点击一个标记来显示信息窗口而另一个标记不允许点击?
答案 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());
}
});