我有一个应用程序,我必须在同一个地图上绘制用户的位置和他朋友的位置,但问题是位置不准确。例如两个坐标如: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是缺乏准确性的一个原因。
我不清楚。谁能让我对此有所了解?或者可以告诉我可以对现有代码进行哪些修改?
提前致谢。
答案 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