如何提高GPS坐标的准确性?

时间:2011-11-18 13:45:24

标签: java android google-maps gps

我有一个应用程序,我必须在同一个地图上绘制用户的位置和他朋友的位置,但问题是位置不准确。例如两个坐标如:81.445679 25.678998和81.448902 25.670123。在我的应用程序中,我正在获取我的位置,然后在地图上绘制相同但我认为从double到int的类型转换正在产生这些差异。该部分的代码如下所示:

 locationManager = (LocationManager)this.getSystemService(LOCATION_SERVICE); 
 Location location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
 location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

 int latitude = (int)(location.getLatitude() * 1000000);
 int longitude = (int)(location.getLongitude() * 1000000);

 point = new GeoPoint(latitude,longitude);
 mapController.animateTo(point);

要将这些坐标发送给用户的朋友,我将这些坐标作为字符串文本发送,如下所示:

 private double longitude,latitude;
 latitude=location.getLatitude();
 longitude=location.getLongitude();
 String message = latitude + " " + longitude ; 

然后将此消息发送给用户的朋友和朋友方,通过将此消息分解为双打来提取此位置。因此可能会从double解析为字符串然后将字符串解析为double是缺乏准确性的一个原因。

我不清楚。谁能让我对此有所了解?或者可以告诉我可以对现有代码进行哪些修改?

提前致谢。

3 个答案:

答案 0 :(得分:1)

在您的代码中,您使用GPS提供程序从locationManager设置您的位置,然后使用NETWORK提供程序使用locationManager中的位置覆盖它。 NETWORK提供商通常会提供最不准确的位置。如果您使用GPS提供商,您可以获得通常50米到2米半径的定位精度。

它与投射错误无关。

您可以检查programmatically,看看GPS是否亮起 - 如果没有,您可以向用户弹出警报以启用它。

答案 1 :(得分:1)

您可能无法通过手机获得准确的位置。

通常,手机中的接收器相当便宜,并且针对节省存储而不是准确性进行了优化。

对于准确的位置,用户需要对天空有一个直视图。他不应该站在高楼等旁边。

你可以尝试从当前位置获得平均值。

答案 2 :(得分:0)

如果你真的需要使用双打,请隐式发送。 如果您想将它们作为字符串发送,请正确转换,请查看此处 - Double number's multiplication with out precision and commas