在Google Maps V2 for 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;
}
});
这是更好的解决方案
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!");
}
}
}
});