Android 我的位置层和位置侦听器中的位置不同
对于谷歌地图,我设置了选项Android 我的位置层和位置侦听器中的位置不同,android,google-maps,location,google-maps-android-api-2,Android,Google Maps,Location,Google Maps Android Api 2,对于谷歌地图,我设置了选项setMyLocationEnabled(true),它会在地图上绘制我的位置,但我从LocationListener获得的位置是不同的。我从onLocationChange(Location Location)添加的标记和我的位置(蓝点)并不总是在同一个位置 位置更新: @Override public void onMapLoaded() { try { LocationManager locationManager = (L
setMyLocationEnabled(true)
,它会在地图上绘制我的位置,但我从LocationListener
获得的位置是不同的。我从onLocationChange(Location Location)
添加的标记和我的位置(蓝点)并不总是在同一个位置
位置更新:
@Override
public void onMapLoaded() {
try {
LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
Location getLastLocation = locationManager.getLastKnownLocation
(LocationManager.PASSIVE_PROVIDER);
try {
if (locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2 * 1000, 5, this);
}
if (locationManager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2 * 1000, 5, this);
}
} catch (SecurityException ex) {
ex.printStackTrace();
}
} catch (NullPointerException | SecurityException ex) {
ex.printStackTrace();
}
}
@Override
public void onLocationChanged(Location location) {
LatLng objLatLng = new LatLng(location.getLatitude(), location.getLongitude());
marker = map.addMarker(new MarkerOptions().position(objLatLng));
}
所以我的问题是如何获取我的位置层的位置源,或者如何更改我的位置更新请求以使它们具有相同的位置?看看我知道它使用内置位置提供程序,但是我想访问它或者知道它是如何配置的。它使用它自己的实现,并且不能保证实现之间是相同的,所以正如我在回答中所说的,最好的选择是使用
GoogleMap.setLocationSource
方法替换my location图层的默认位置提供程序我不想替换为my location source,因为默认位置提供程序看起来更平滑,但如果无法获得默认位置提供程序,我会稍后再做。看看我知道它使用内置位置提供程序,但是我想访问它或者知道它是如何配置的。它使用它自己的实现,并且不能保证实现之间是相同的,所以正如我在回答中所说的,最好的选择是使用GoogleMap.setLocationSource
方法替换my location图层的默认位置提供程序我不想替换为my location source,因为默认位置源看起来更平滑,但如果无法获得默认位置,我会稍后再进行替换。