簡體   English   中英

Google地圖-不能使用animateCamera同時縮放和移動,但可以使用moveCamera

[英]Google Maps - cannot zoom and move at the same time with animateCamera, but can with moveCamera

我正在使用Google Maps for Android。 我需要將相機移至某個位置並同時放大。

我像這樣構建我的CameraUpdate

    CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(latLng)
        .zoom(zoom)
        .build();
    CameraUpdate update = CameraUpdateFactory.newCameraPosition(cameraPosition);

然后對其進行動畫處理:

map.animateCamera(update);

這會產生將攝像機移至目標位置的預期結果。 但是,它根本無法放大相機。 如果我改用moveCamera和相同的update對象:

map.moveCamera(update);

我可以同時看到移動和縮放效果(沒有所需的動畫)

是什么原因導致animateCameramoveCamera之間的行為不一致? 如何將animateCamera配置為同時移動和縮放?

找到了問題! 它是在群集Click偵聽器中:

mClusterManager.setOnClusterClickListener(
     new OnClusterClickListener<MyClusterItem>() {
            @Override
            public boolean onClusterClick(Cluster<MyClusterItem> cluster) {
                CameraPosition cameraPosition = new CameraPosition.Builder()
                     .target(latLng)
                     .zoom()
                     .build();
                CameraUpdate update = CameraUpdateFactory.newCameraPosition(cameraPosition);
                mMap.animateCamera(update);

                return false;
            }
        });

問題是從OnClusterClickListener返回false。 盡管未記錄,但大概可以像其他Android設備一樣工作,並指示是否已使用click事件。 通過將其設置為false,click事件可能會傳播到GoogleMap對象,該對象必須具有取消縮放的某些功能。

一個糟糕的解決方法是在animateCamera之前在對moveCamera的單獨調用中執行縮放:

CameraPosition zoomCameraPosition = new CameraPosition.Builder()
        .zoom(zoom)
        .build();
CameraUpdate zoomUpdate = CameraUpdateFactory.newCameraPosition(zoomCameraPosition);
mMap.moveCamera(zoomUpdate);

CameraPosition moveCameraPosition = new CameraPosition.Builder()
        .target(latLng)
        .build();
CameraUpdate moveUpdate = CameraUpdateFactory.newCameraPosition(moveCameraPosition);
mMap.animateCamera(moveUpdate);

不過,這並不是一個完全令人滿意的答案-運動會進行動畫處理,但縮放會立即進行。 看起來很生澀。 我正在尋找一個更正確的答案。

您應該使用CameraUpdateFactory.newLatLngZoom

 mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), zoom));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM