如何在Android开发中获得精确的经度和纬度?

时间:2016-11-18 15:50:20

标签: android google-maps

我想获得设备的精确坐标。

正如您在我的代码中所看到的,我尝试使用位置管理器,但它只指向我所在的国家/地区,我需要确切的位置。

@Override
public void onMapReady(GoogleMap googleMap) {
    LocationManager lm = (LocationManager)getSystemService(this.LOCATION_SERVICE);
    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    double longitude = location.getLongitude();
    double latitude = location.getLatitude();
    mMap = googleMap;


    LatLng myMarker = new LatLng(longitude,latitude);

    mMap.addMarker(new MarkerOptions().position(myMarker).title("I am here"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(myMarker));
}

有没有更好的方法可以帮忙?

1 个答案:

答案 0 :(得分:1)

您应该请求位置更新,这将为您提供更高精度的位置,例如:

Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_HIGH);
        criteria.setPowerRequirement(Criteria.POWER_MEDIUM);

        locationManager.requestLocationUpdates(5000, 0, criteria, new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                double longitude = location.getLongitude();
                double latitude = location.getLatitude();
                // Here you have precise location
                locationManager.removeUpdates(this);
            }

            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {

            }

            @Override
            public void onProviderEnabled(String provider) {

            }

            @Override
            public void onProviderDisabled(String provider) {

            }
        }, null);