2017-03-04 67 views
1

我从LocationListener获得了这个值,但是这个代码只给了4或5位数字,比如43.1234,我想要更高的精度,比如43.1234567,那么该怎么做呢?android如何获得7位或更多数字的当前位置精度

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; 
     } 
    }); 

回答

4

有3种类型Android中的位置信息提供的:

  1. GPS_PROVIDER
  2. NETWORK_PROVIDER
  3. PASSIVE_PROVIDER。

用途: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,10,新MyLocationListener());

您将获得精度高达14+小数位。

但是如果你使用它们的融合是这样的:

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,my_google_listener);

您将精确到6到7位小数。尝试一下 !!!裁判

但这里要注意的几件事情是,GPS提供商需要时间,而谷歌的位置要快得多,因为它从API调用到其谷歌服务器的数据库中获取的数据来获取位置。

当谷歌提供商通过移动或wifi数据获取位置时,GPS离线工作。

+0

感谢,GPS心情太慢,屋顶下是没有作用可言,比我在地图上没有选择,强制用户水龙头超过得到他/她的确切位置10位数字。 –

+1

要获得更准确的位置,您应该尝试使用Fuse位置提供商。 – TwinkalGajera

+0

我使用融合,但没有得到我想要的精度,它显示约5米错误 –

1

我从LocationListener中得到了这个,但是这个代码只给了4或5位数字,比如43.1234,我想要43.1234567更精确,所以怎么做?

首先,我不认为数字计数会影响准确性准确。您应该依靠位置的准确性值来代替。例如,locationX(位数小于6,准确度8)比位置Y(位数大于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?