Android - 如何实现此Google地图动画?

时间:2015-07-20 03:29:11

标签: java android google-maps google-maps-android-api-2

这就是我目前使用谷歌地图的方式;

        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地球仪)

  • 然后地图应缩放/动画到播放器的位置,以提供与按地图右上角的位置按钮时相同的效果。

我已经在网上看过,尝试了一些事情并且没有任何运气。如果有人可以引导我通过这个或给我一个很好的指南链接,将非常感谢!

1 个答案:

答案 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()));
            }
        });

我试过了,它对我来说很好。如果不清楚,请告诉我,希望它有所帮助。

enter image description here