Ich habe wahrscheinlich einfache Frage, aber ich kann nicht herausfinden, was falsch ist.GoogleMaps API v2 setMyLocationEnabled unterscheidet sich von LocationManager
Wenn ich meinen Standort mit Knopf auf der Karte einstelle, ist der Standort fast 100 genau.
Wenn ich Location Manager verwende, um meinen Standort zu bekommen, bekomme ich ungefähr 10-20 Meter falschen Standort. Hier
ist der Code:
@Override
public void onMapReady(final GoogleMap googleMap) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mGoogleMap = googleMap;
mGoogleMap.setMyLocationEnabled(true);
Button setLoc = (Button) findViewById(R.id.setLoc);
assert setLoc != null;
setLoc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mGoogleMap.clear();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
latLng = new LatLng(location.getLatitude(), location.getLongitude());
Toast.makeText(MainActivity.this, String.valueOf(latLng), Toast.LENGTH_LONG).show();
//zoom to current position:
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(17));
mGoogleMap.addMarker(new MarkerOptions().position(latLng).title("Your location").anchor(0.0f, 1.0f));
}
});
}
Was mache ich falsch? Der blaue Punkt befindet sich nicht an der gleichen Stelle wie mein Marker, und der blaue Punkt hat eine bessere Präzision, wie ich oben sagte. Danke!
klein UPDATE , wenn ich den Code auf Emulator laufe, ist es fast die gleiche Stelle ist ... hmm, auf reales Gerät ist es anders. Was könnte das Problem sein?
Es funktionierte, ich musste nur den ** Fused Location Provider ** verwenden, der gleiche wie der blaue Punkt. Jetzt ist mein Standort immer gleich. Antwort angenommen. – Wladislaw
Danke. Mehr Macht! –