我有一个应用程序,我必须在同一张 map 上绘制用户的位置和他 friend 的位置,但问题是位置不准确。例如两个坐标:81.445679 25.678998 和 81.448902 25.670123。在我的应用程序中,我正在获取我的位置,然后在 map 上绘制相同的位置,但我认为从 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);
为了将这些坐标发送给用户的 friend ,我将这些坐标作为字符串文本发送,如下所示:
private double longitude,latitude;
latitude=location.getLatitude();
longitude=location.getLongitude();
String message = latitude + " " + longitude ;
然后将此消息发送给用户的 friend 和 friend 端,通过将此消息分解为 double 来提取此位置。因此可能将 double 解析为字符串,然后将字符串解析为 double 是缺乏准确性的一个原因。
我不清楚。所以有人可以给我一些想法吗?或者可以告诉我可以对现有代码进行什么样的修改?
提前致谢。
最佳答案
您可能无法通过手机获得准确的位置。
通常,手机中的接收器相当便宜,并且针对节能而非准确性进行了优化。
为了准确定位,用户需要直视天空。他不应该站在高楼旁边等等。
不过,您可以尝试从他的当前位置获取平均值。
关于java - 如何提高GPS坐标的精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183384/