我在LocationListener中有这个,但是这段代码只提供4
或5
个数字,比如43.1234
,我希望43.1234567
更精确,所以如何做到这一点?
private LocationListener mLocationListener = new LocationListener() {
@Override
public synchronized void onLocationChanged(Location l) {
strLatLng = l.getLatitude() + "," + l.getLongitude();
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
如果它有另一种方式而不是LocationListener
,那么这一点并不重要,我在谷歌地图setOnMapClickListener
上写这样的准确性就是这样:
其他方面是否有这种准确性?
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
public void onMapClick(LatLng CLICKED_LOC) {
double lx,ly;
lx = CLICKED_LOC.latitude;
ly = CLICKED_LOC.longitude;
strLatLng = lx+","+ly;
}
});
答案 0 :(得分:5)
Android中有三种类型的位置提供程序:
使用: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,10,new MyLocationListener());
您将获得精确到14位以上的小数位。
但如果你像这样使用它们的融合:
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,my_google_listener);
您将获得精确到6到7位小数。试试吧 !!!参考
但请注意,GPS提供商需要时间来获取位置,而谷歌位置的速度要快得多,因为它会将API调用数据传输到谷歌服务器数据库。
当谷歌提供商通过移动或wifi数据获取位置时,GPS可脱机工作。
答案 1 :(得分:1)
我有这个来自LocationListener,但是这段代码只给出了4或5位数字,比如43.1234,我想要更准确,比如43.1234567,那么怎么做呢?
首先,我认为数字计数不会完全影响准确性。您应该依赖于位置的准确性值。例如,locationX(数字小于6,精度为8)比locationY(数字大于6,精度为10)可靠。
其次,GPS会给你更准确的位置,但我强烈建议使用融合位置提供商。因为它结合了一些因素,并为您的愿望产生最佳位置(例如,PRIORITY_HIGH_ACCURACY)
第三,我看到了你的评论,“我没有选择强制用户点击地图以获得超过10位的确切位置”。我不知道你的应用程序的情况,但这听起来有点大。我建议阅读这个答案,https://gis.stackexchange.com/a/109178/77725
// https://gis.stackexchange.com/a/109178/77725
Decimal Places Aprox. Distance Say What?
1 10 kilometers 6.2 miles
2 1 kilometer 0.62 miles
3 100 meters About 328 feet
4 10 meters About 33 feet
5 1 meter About 3 feet
6 10 centimeters About 4 inches
7 1.0 centimeter About ½ an inch
8 1.0 millimeter The width of paperclip wire.
9 0.1 millimeter The width of a strand of hair.
10 10 microns A speck of pollen.
11 1.0 micron A piece of cigarette smoke.
12 0.1 micron You're doing virus-level mapping at this point.
13 10 nanometers Does it matter how big this is?
14 1.0 nanometer Your fingernail grows about this far in one second.
15 0.1 nanometer An atom. An atom! What are you mapping?