在我的应用程序中,我在当前位置的纬度和经度显示带有标记的地图。我使用Map.setMyLocationEnabled(true)
让用户与其位置进行交互。
我的问题是setMyLocationEnabled
方法和我的location - lat,long
代码标记的位置如下:
我使用以下代码获取当前位置的纬度和经度:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
if(location!=null){
latitude = location.getLatitude();
longitude = location.getLongitude();
---------
}
如何获得谷歌的setLocationEnabled提供的当前位置的准确纬度和经度?
绿旗标记是我的标记,蓝点是android提供的。
答案 0 :(得分:0)
不是使用LocationManager,而是通过setOnMyLocationChangeListener将自己添加到GoogleMap的位置客户端。它返回蓝点指向的相同位置。
答案 1 :(得分:0)
我认为问题在于您使用的是getLastKnownLocation()
方法。
Location location = locationManager.getLastKnownLocation(provider);
此方法不会返回最新位置,而是返回所选位置提供程序中的最后一个已知位置。如文档here中所述。
返回指示上一个已知位置的数据的位置 从给定的提供者处获得的修复。
这可以在不启动提供程序的情况下完成。请注意这一点 位置可能已过时,例如,如果设备已转动 关闭并搬到另一个地方。
谷歌地图(using Map.setMyLocationEnabled(true)
)可能正在标记您的最新位置,而从locationManager.getLastKnownLocation()
收到的位置有点陈旧且放错地方。这可能就是为什么您要将两个标记放在不同的职位。
为了准确起见,您应该实施正确的位置监听器,并尝试从位置管理器获取最新的位置坐标。 training docs
提供了很好的信息