android如何获得7位或更多位数的当前位置准确性

时间:2017-03-04 06:34:23

标签: android google-maps gps location

我在LocationListener中有这个,但是这段代码只提供45个数字,比如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;
        }
    });

2 个答案:

答案 0 :(得分:5)

Android中有三种类型的位置提供程序:

  1. GPS_PROVIDER
  2. NETWORK_PROVIDER
  3. PASSIVE_PROVIDER。
  4. 使用: 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?