识别Android上点击当前位置标记谷歌地图
问题描述:
在Android版Google地图V2中,当用户点击当前位置标记(蓝色的白色边框)时,最佳选择是什么?识别Android上点击当前位置标记谷歌地图
我不明白在网上,我可以想像的唯一途径的任何例子是这样的:
googleMap.setOnMapClickListener(new OnMapLongClickListener() {
@Override
public void onMapClick(LatLng point) {
// currentLocation is the location set by onLocationChanged method
if (currentLocation != null
&& (currentLocation.getLatitude() == point.latitude
&& currentLocation.getLongitude() == point.longitude)) {
toastIt("Click over current position!");
}
}
});
答
我知道已经晚了,但对于任何一个搜索出该 它本身现在支持(自2017年9月18日)
从页提到如下:
使用新的GoogleMap.OnMyLocationClickListener检测用户何时单击“我的位置”蓝点。 (第35822305)
@Override
public void onMyLocationClick(@NonNull Location location) {
Toast.makeText(this, "Current location:\n" + location, Toast.LENGTH_LONG).show();
}
我建议按照这个页面的最新更新 https://developers.google.com/maps/documentation/android-api/releases
答
您可以添加用户位置标记,并采取参考它的ID:
mUserMarkerId = mMap.addMarker(new MarkerOptions().position(latLng)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)))
.getId();
并与onMarkerClickListener
可以检测是否标记点击是用户标记
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if (marker.getId().equalsIgnoreCase(mUserMarkerId))
// Clicked user marker
}
return true;
}
});
答
我T的更好的解决方案
map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng)
{
Location location=getLocation();
if(map.isMyLocationEnabled()&&location!=null)
{
float distance[]=new float[1];
Location.distanceBetween(location.getLatitude(), location.getLongitude(), latLng.latitude, latLng.longitude, distance);
if(distance[0]<location.getAccuracy())
{
Log.d(TAG, "onMapClick: It is user!");
}
}
}
});
检查此类似[问题](http://stackoverflow.com/q/16496715/3419997) – turtle 2014-11-03 10:46:31