所以我一直在尝试检测MapView
的点击事件,以便通过点击启动方法。
尝试标准onClickListener
或onTouch
的任何变体都是不好的。
我不想添加叠加层来"捕获"地图某个部分的点击。我希望地图继续响应拖动、缩放等。
任何帮助将不胜感激。
因此,显然解决方案非常简单。我想它是在最后一个支持库之一中添加的。谷歌地图现在支持onMapClick。
mMapView.getMap().setOnMapClickListener(new OnMapClickListener()
{
@Override
public void onMapClick(LatLng arg0)
{
android.util.Log.i("onMapClick", "Horray!");
}
});
在新版 Google Play 服务中,您应该在映射准备就绪后,在onMapReady(GoogleMap map);
回调处调用该方法。
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener()
{
@Override
public void onMapClick(LatLng arg0)
{
android.util.Log.i("onMapClick", "Horray!");
}
});
}
public class MapView implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
@Override
public boolean onMarkerClick(Marker marker) {
println("click marker");
}
}
这是 Kotlin 中的解决方案
简单地图点击方法:
googleMap.setOnMapClickListener {
Toast.makeText(mContext, "Map Clicked", Toast.LENGTH_SHORT).show()
}
标记点击方法:
googleMap.setOnMarkerClickListener { marker ->
Toast.makeText(mContext, "Marker Title: ${marker.title}", Toast.LENGTH_SHORT).show()
false
}