簡體   English   中英

在適用於Android的Google Maps API v2中保留對地圖更新的以前的縮放值

[英]Retaining previous zoom value on a Map update in Google Maps API v2 for Android

我正在開發基於地圖的應用程序。 它所做的是從服務器接收緯度和經度的數據。 它每x秒刷新一次數據。 然后,它將地圖上的標記移動到收到的新位置(更改的位置)。

我的問題是,在使用地圖時,我不希望為標記重置縮放級別。 我希望它保留用戶在查看地圖時可能已調整到的縮放級別。

我有一個名為bus的標記定義為實例變量:

  Marker bus = null;

這是我的BroadCast接收器的代碼,該代碼表明已刷新數據。

    private BroadcastReceiver myReceiver = new BroadcastReceiver() {

        @Override
        //public void onReceive(Context context, Intent intent) {
        public void onReceive(Context context, Intent intent) {

               if(bus!= null){
                   bus.remove();
               }

            bun = ((TabActivity)Tab2Fragment.this.getActivity()).getDataFromActivity();
            try{
            BusLocation = new LatLng(Double.parseDouble(bun.getString("lat")),Double.parseDouble(bun.getString("long")));
            }catch(JSONException e){
                e.printStackTrace();
            }

            bus = map.addMarker(new MarkerOptions().position(BusLocation)
                    .title("Bus is Here")
                    .icon(BitmapDescriptorFactory
                            .fromResource(R.drawable.ic_launcher)));

                // Move the camera instantly to the Bus Location with a zoom of 15.


map.animateCamera(CameraUpdateFactory.newLatLngZoom(BusLocation, 15), 1000, null);

        }
    };

每次更新時,都會重新縮放級別。 我如何不縮放水平? 我嘗試使用newLatLng()代替LatLngZoom,但是在初始化時,它的縮放距離非常遠。 而且我沒有可用的數據來放大相關性。

謝謝你的幫助 :)

事實證明,它的方法太簡單了。 我沒想 物有所值:

具有布爾值

private boolean first = true;

然后在更新中:

            if(first)
            {
                map.animateCamera(CameraUpdateFactory.newLatLngZoom(BusLocation, 15), 1000, null);
                first = false;
            }
            else{
                map.animateCamera(CameraUpdateFactory.newLatLng(BusLocation), 1000, null);
            }

暫無
暫無

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

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