我想获得设备的精确坐标。
正如您在我的代码中所看到的,我尝试使用位置管理器,但它只指向我所在的国家/地区,我需要确切的位置。
@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));
}
有没有更好的方法可以帮忙?
答案 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);