Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提高GPS坐标的精度?_Java_Android_Google Maps_Gps - Fatal编程技术网

Java 如何提高GPS坐标的精度?

Java 如何提高GPS坐标的精度?,java,android,google-maps,gps,Java,Android,Google Maps,Gps,我有一个应用程序,我必须在同一张地图上绘制用户和他朋友的位置,但问题是位置不准确。例如,两个坐标,如:81.445679 25.678998和81.448902 25.670123。在我的应用程序中,我得到我的位置,然后在地图上绘制相同的位置,但我认为从double到int的类型转换产生了这些差异。该部分的代码如下所示: locationManager = (LocationManager)this.getSystemService(LOCATION_SERVICE); Location

我有一个应用程序,我必须在同一张地图上绘制用户和他朋友的位置,但问题是位置不准确。例如,两个坐标,如: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 ; 
然后将此消息发送给用户的朋友,在朋友端,通过将此消息拆分为两个字符来提取此位置。因此,从双字符到字符串再从字符串到双字符的解析可能是缺乏准确性的原因之一

我不清楚。有人能告诉我一些关于这个的想法吗?或者可以告诉我可以对现有代码做什么样的修改


提前感谢。

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

这与铸造错误没有什么关系


您可以检查GPS是否开启,如果不开启,您可以弹出警报提示用户开启GPS。

您可能无法从手机中获得准确的位置

通常,手机中的接收器相当便宜,并且经过优化以节省能源,而不是精确性

为了精确定位,用户需要有一个直视天空的视角。他不应该站在高房子旁边


你可以试着从他目前的位置得到平均值。

请提供示例输出并说明问题:例如,你期望看到什么与你实际看到的相比。你期望的准确度是多少?从本质上说,手机GPS设备不是很精确。在我的应用程序中,地图上显示的点在缩放地图时偏离了实际建筑物。那么我如何纠正这一点呢?但如果我使用GPS,那么它在实际设备上不起作用。即使我知道GPS比网络提供商更精确,但在实际设备上它不起作用。我已经在三星上测试过它Galaxy。你需要确保设备上的GPS已打开。我检查了好几次,但都失败了。是否有任何故障或某种缺陷?当我使用network_provider时,它工作正常,但唯一的问题是准确性,那么。请帮帮我。我不认为有任何必要通过编程来检查GPS是否开启。正如我之前所说,它开启了。我已经用另一个内置在Android中的应用程序检查了它,即GPS,以查看不同的路径。在地图上,它显示了我的位置,但如果我使用GPS,它不会在我的应用程序中显示相同的位置GPS_提供商。相反,将0.0 0.0显示为用户的超现实位置。知道可能出了什么问题吗?如果你在室内或高层建筑中,您的GPS更新可能需要很长时间,因此不会调用onLocationChanged方法。在我的情况下,这是不可能的,因为我必须利用internet连接在应用程序中加载地图,这只有在我在某个特定建筑物中才可能。如果您不在最高层,GPS通常无法工作。然而,蜂窝网络可以根据移动网络和wlan热点猜测其所在位置。