我正在尝试完成这个简单的任务,这似乎非常简单,但它仍然没有像它应该做的那样工作。我正在使用下面的方法,但手机在市中心放大,距离我的蓝色定位点大约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,因为每个人都说这是正确的方式。似乎我没有得到我的当前位置,而是我所在城市的位置。
发布于 2014-06-27 22:35:46
新答案:-
mMap.setMyLocationEnabled(true);
Location myLocation = mMap.getMyLocation();
if (myLocation != null) {
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(myLocation.getLatitude(), myLocation
.getLongitude()), 14));
}发布于 2015-02-20 18:35:20
这来得有点太晚了,但有两种方法可以做到。
FusedLocation接口
实现FusedLocation接口(参见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));
}OnMyLocationChangeListener
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的,而谷歌推荐使用FusedLocation API。如果你真的想使用它,你可以使用它,但要知道未来的任何API更改都会使它不可用,并破坏你的应用程序。
https://stackoverflow.com/questions/24454409
复制相似问题