【问题标题】:android how get current location with 7 or more digits Accuracyandroid如何以7位或更多位的准确性获取当前位置
【发布时间】:2017-03-04 06:34:23
【问题描述】:

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

【问题讨论】:

    标签: android google-maps gps location


    【解决方案1】:

    Android 中有 3 种位置提供程序:

    1. GPS_PROVIDER
    2. NETWORK_PROVIDER
    3. PASSIVE_PROVIDER。

    使用: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, new MyLocationListener());

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

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

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

    您将获得高达 6 到 7 位小数的精度。试试吧 !!!参考

    但请注意,GPS Provider 需要时间来获取位置,而 Google Location 则要快得多,因为它从 API 调用获取数据到其 google 服务器数据库。

    GPS 离线工作,而 google 提供商通过手机或 wifi 数据获取位置。

    【讨论】:

    • 谢谢,GPS 速度太慢了,在屋顶下它根本不起作用,我别无选择,强迫用户点击地图以获取超过 10 位数字的确切位置。跨度>
    • 要获得更准确的位置,您应该尝试 Fuse location provider 。
    • 我使用了 fusion,但也没有得到我想要的精度,它显示错误大约 5 米
    • @TwinkalGajera 在您的代码中,“my_google_listener”是什么?我无法得到它。
    【解决方案2】:

    我从 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?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2017-04-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多