我正在努力完成这个简单的任务,这似乎非常简单,但它仍然没有按照它应该做的那样工作。我使用下面的方法,但手机放大市中心,距我的蓝色位置点约2公里。
public void setUpMap() {
mGoogleMap.setMyLocationEnabled(true);
String context = Context.LOCATION_SERVICE;
LocationManager locationManager = (LocationManager)mContext.getSystemService(context);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location myLocation = locationManager.getLastKnownLocation(provider);
double latitude = myLocation.getLatitude();
double longitude = myLocation.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
}
我尝试设置不同的缩放值,但没有什么变化。我不确定是否应该设置newLatLngBounds,因为每个人都说这是正确的方法。我似乎没有得到我现在的位置,而是我所在城市的位置。
答案 0 :(得分:2)
新答案: -
mMap.setMyLocationEnabled(true);
Location myLocation = mMap.getMyLocation();
if (myLocation != null) {
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(myLocation.getLatitude(), myLocation
.getLongitude()), 14));
}
答案 1 :(得分:1)
这有点太晚了,但有两种方法可以解决这个问题。
实施FusedLocation API(请参阅Making Your App Location Aware),将其用于setup a location request并获取位置修复。当您在回调中获得Location对象时,使用它来设置GoogleMap对象中的位置。
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(location.getLatitude(), location.getLongitude()), 15));
}
GoogleMap类有一个OnMyLocationChangeListener,你可以像这样实现一个修复:
mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(location.getLatitude(), location.getLongitude()), 15));
mMap.setOnMyLocationChangeListener(null);
}
});
问题是,界面为marked as deprecated,Google建议使用FusedLocation API。如果您真的想要,可以使用它,但要注意任何未来的API更改,使其无法使用并破坏您的应用。