Apa*_*ith 14 android google-maps google-maps-markers google-maps-android-api-2
我正在开发一个简单的应用程序,我已经显示标记标题,mrkr.showInfoWindow()但我不希望用户再次点击该标记.如何禁用特定标记的点击事件?
这就是我尝试的方式.
Marker marker = gMap.addMarker(new MarkerOptions().position(new LatLng(location
.getLatitude(), location.getLongitude())).title("I am here").icon(BitmapDescriptorFactory.fromResource(R.drawable.mrk1)));
marker.showInfoWindow();
//how to use marker.setClickable here or somthing here.?
Run Code Online (Sandbox Code Playgroud)
如何在我的申请中显示我的标记的infowindow()/标题?
Wis*_*ter 25
您可以在GoogleMap对象中设置onMarkerClickListener
map.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
小智 7
3年后的这一点很清楚,没有办法让标记点击通过地图本身(OnMapClickListener)来处理.标记将始终拦截此事件,但您可以通过单击禁用默认行为(如上面的答案所示).如果它可以帮助仍需要更好解决方案的人,则发布以下内容.
要解决此限制,有两种选择.我已经实现了两者,并且可以根据请求清理和共享代码.
1.)创建一个GroundOverlay位图,其中包含您不想处理的航点.您可以使用GoogleMap的Projection对象将屏幕点转换为LatLng,并计算位图的位置,以使航点显示在正确的位置.处理旋转,地图填充和一些其他问题相当复杂.放大时,航点标记的大小会增大,然后在onCameraIdle事件中,您重新创建位图,并在必要时重新定位GroundOverlay.这是我在制作中使用的方法.平移,旋转和缩放都非常流畅,并且可以设置地面覆盖以处理或不处理水龙头,它解决了问题.我无法弄清楚如何通过倾斜来完成这项工作.航点在旋转期间不会保持朝北,但在重新创建GroundOverlay时可以直立旋转.在onCameraIdle导致重新创建地面叠加层之后,地图会有短暂的暂停/无响应.
2.)创建一个覆盖整个屏幕的View对象,并在视图的onDraw方法中绘制航点标记.再次,使用GoogleMap的投影对象来计算绘制标记的位置.在onCameraMove事件中,在视图上调用invalidate(),以便在新的屏幕位置重新绘制标记.这样做的主要优点是简单.旋转,倾斜,地图填充偏移都是为您处理的.主要的缺点是,如果你在每个onCameraMove事件上失效,它有点太cpu密集(我推测),地图平移/缩放可能会变得不连贯.如果您使每个3或5个移动事件无效,那么当您平移/缩放时,航点似乎会弹跳,因为它们不经常在新位置重新绘制.但是,在地图移动结束时没有延迟.最终,在地图上有100-200个航点,"平移"性能问题对我来说太明显了.
希望这有助于某人.如果您需要一些代码帮助,请告诉我.
| 归档时间: |
|
| 查看次数: |
12697 次 |
| 最近记录: |