android中当前位置的准确经纬度
Posted
技术标签:
【中文标题】android中当前位置的准确经纬度【英文标题】:accurate latitude and longitude of current location in android 【发布时间】:2013-08-03 18:57:44 【问题描述】:在我的应用程序中,我在当前位置的纬度和经度处显示带有标记的地图。我使用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();
---------
如何根据 google 的 setLocationEnabled 提供我当前位置的准确经纬度?
绿旗标记是我的标记,蓝点是 android 提供的。
【问题讨论】:
您必须详细说明Criteria criteria = new Criteria();
- 请参阅此处developer.android.com/reference/android/location/Criteria.html。
类似criteria.setAccuracy(Criteria.ACCURACY_FINE);
、criteria.setAltitudeRequired(bool);
、criteria.setBearingRequired(bool);
、criteria.setCostAllowed(bool);
、ASLO - criteria.setVerticalAccuracy(ACCURACY_HIGH)
AND criteria.setHorizontalAccuracy(ACCURACY_HIGH)
。
上面的方法我都加了但是还是和老的一样。
那么,你需要这个 - developers.google.com/maps/documentation/android/v1/…。
【参考方案1】:
不使用 LocationManager,而是通过 setOnMyLocationChangeListener 将自己添加到 GoogleMap 的位置客户端。它返回蓝点指向的相同位置。
【讨论】:
【参考方案2】:我认为问题在于您使用的是getLastKnownLocation()
方法。
Location location = locationManager.getLastKnownLocation(provider);
此方法不返回最新位置,而是返回所选位置提供程序的最后一个已知位置。如文档here中所述。
返回一个 Location 指示来自最后一个已知位置的数据 从给定的提供程序获得的修复。
这可以在不启动提供程序的情况下完成。请注意,这 位置可能已过时,例如,如果设备已转动 关闭并移动到另一个位置。
可能谷歌地图 (using Map.setMyLocationEnabled(true)
) 正在标记您的最新位置,而从 locationManager.getLastKnownLocation()
收到的位置有点旧且放错了位置。这可能是您在不同位置获得两个标记的原因。
为了准确起见,您应该实施适当的位置侦听器并尝试从位置管理器获取最新的位置坐标。好的信息可在training docs
【讨论】:
以上是关于android中当前位置的准确经纬度的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android GPS 位置纬度/经度准确计算车速 (MPH)