这就是我目前使用谷歌地图的方式;
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);
它会生成一张全屏 map ,由于某种原因,该 map 完全放大到海洋中,因此 map 只有一个大的蓝色像素,直到您继续缩小。
我想做的事情:
打开此 Activity 时, map 应以用户的位置为中心,并且 map 应尽可能缩小(就像您正在查看 2D 地球仪一样)
<然后 map 应该会缩放/动画显示玩家的位置,以产生与您按下 map 右上角的位置按钮时相同的效果。
我在网上看过,尝试过一些东西,但没有任何运气。如果有人可以引导我完成此过程或给我一个很好的指南的链接,将不胜感激!
最佳答案
要实现你想要的,你应该:
1) 获取用户的位置,您可以使用最后已知的位置,这样您的主要 Activity 就不会挂起并等待 GPS 返回位置。
LocationManager locationManager = (LocationManager)getSystemService
(Context.LOCATION_SERVICE);
Location getLastLocation = locationManager.getLastKnownLocation
(LocationManager.PASSIVE_PROVIDER);
2) 将缩放级别设置为 1,这是最小的缩放级别,2D globe
;您也可以使用用户位置将 map 居中。
googleMap.moveCamera(CameraUpdateFactory.zoomTo(1));
3) 设置相机动画以缩放到用户位置,缩放级别为 20(最大缩放级别)。需要注意的一件事是,您可能希望等到 2D globe
map 加载完毕,以便用户可以看到缩放发生。
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()));
}
});
我试过了,对我来说效果很好。如果不清楚,请告诉我,希望对您有所帮助。
关于java - Android - 我怎样才能实现这个谷歌地图动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31508444/