这就是我目前使用谷歌地图的方式;
mapFragment = ((SupportMapFragment) getChildFragmentManager()
.findFragmentById(R.id.map)).getMap();
mapFragment.setMyLocationEnabled(true);
mapFragment.setMapType(GoogleMap.MAP_TYPE_HYBRID);
mapFragment.getUiSettings().setMapToolbarEnabled(false);
mapFragment.getUiSettings().setScrollGesturesEnabled(false);
mapFragment.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
它会生成一个全屏幕地图,由于某种原因,它会完全缩放到海洋中,所以地图只是一个大的蓝色像素,直到你一直缩小。
我想做什么:
当此活动打开时,地图应将用户的位置放在中心,并且地图应尽可能缩小(就像您正在查看2D地球仪)
然后地图应缩放/动画到播放器的位置,以提供与按地图右上角的位置按钮时相同的效果。
我已经在网上看过,尝试了一些事情并且没有任何运气。如果有人可以引导我通过这个或给我一个很好的指南链接,将非常感谢!
答案 0 :(得分:2)
要达到你想要的效果,你应该: 1)获取用户的位置,您可以使用最后的已知位置,这样您的主要活动就不会挂起并等待GPS返回一个位置。
LocationManager locationManager = (LocationManager)getSystemService
(Context.LOCATION_SERVICE);
Location getLastLocation = locationManager.getLastKnownLocation
(LocationManager.PASSIVE_PROVIDER);
2)将缩放级别设置为1,这是最小的缩放级别2D globe
;您也可以使用用户位置居中地图。
googleMap.moveCamera(CameraUpdateFactory.zoomTo(1));
3)使用缩放级别20(最大缩放级别)为相机设置动画以放大用户位置。需要注意的一点是,您可能希望等到加载2D globe
地图,以便用户可以看到缩放发生。
googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
public void onMapLoaded() {
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
.target(new LatLng(userLocation.getLatitude(), userLocation.getLongitude()))
.zoom(20)
.build()));
}
});
我试过了,它对我来说很好。如果不清楚,请告诉我,希望它有所帮助。