首页 > 解决方案 > Android / Google Map:位置更改重置缩放和方位

问题描述

我已将地图集成到我的应用程序中,并在移动时更新我的​​位置。我想要特定的方位和缩放级别,并且我正在使用边界。

以下视频显示了具有 2 个位置更新的应用程序。请注意它如何在每次更新时轮换。我希望地图平稳移动。下面是我在 onLocationChanged 上调用的方法。

在此处输入图像描述

    public void moveToLocation(LatLng currentLoc, LatLng targetLoc, boolean animate) {
    Location start = new Location("dummyprovider");

    Location end = new Location("dummyprovider");

    start.setLatitude(currentLoc.latitude);
    start.setLongitude(currentLoc.longitude);
    end.setLatitude(targetLoc.latitude);
    end.setLongitude(targetLoc.longitude);

    LatLng mid = new LatLng((currentLoc.latitude + targetLoc.latitude) / 2, (currentLoc.longitude + targetLoc.longitude) / 2);

    LatLngBounds.Builder builder = new LatLngBounds.Builder();

    builder.include(currentLoc);
    builder.include(targetLoc);

    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(builder.build(), 100);

    map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
        @Override
        public void onMapLoaded() {
            map.animateCamera(cu, 10, new GoogleMap.CancelableCallback() {
                @Override
                public void onFinish() {

                    CameraPosition cameraPosition;
                    cameraPosition = new CameraPosition.Builder().
                        target(mid).
                        tilt(60).
                        zoom(map.getCameraPosition().zoom + (float) 0.55).
                        bearing(start.bearingTo(end)).
                        build();

                        map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                        //map.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                }

                @Override
                public void onCancel() {
                }
            });
        }
    });
}

标签: androidgoogle-maps

解决方案


推荐阅读