簡體   English   中英

Google地圖縮放級別

[英]Google maps zoom level

我正在使用該代碼在地圖上顯示當前位置:

    GoogleMap googleMap;
    public static Location mLocation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_maps);

        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

        googleMap = fm.getMap();

        googleMap.setMyLocationEnabled(true);

        LocationManager locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);

        Criteria criteria = new Criteria();

        String provider = locationManager.getBestProvider(criteria, true);

        Location location = locationManager.getLastKnownLocation(provider);

        googleMap.setOnMyLocationChangeListener(new   GoogleMap.OnMyLocationChangeListener() {
            @Override
            public void onMyLocationChange(Location location) {
                mLocation = location;
                displayCurrentLocation();
            }
        });
    }

    public  void displayCurrentLocation() {
        CameraPosition cameraPosition = new CameraPosition.Builder().
                target(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).
                zoom(15).
                bearing(0).
                build();
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    }
}

如果幾秒鍾后我將其放大,則縮放級別返回到其起始位置。 我知道這是因為我的聽眾中使用了zoom(15),但是是否有可能不這樣做呢? 如果使用將放大並開始行走,我不想失去縮放級別

在類中創建String數據成員

String loadLocation="notDone"

在onMyLocationChange中

 mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
        @Override
        public void onMyLocationChange(Location location) {
            mLocation = location;
            if(loadLocation.equals("notDone")){
                displayCurrentLocation();
            }
        }
    });

在displayCurrentLocation方法中

  public  void displayCurrentLocation(){
    CameraPosition cameraPosition = new CameraPosition.Builder().
            target(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).
            tilt(60).
            zoom(15).
            bearing(0).
            build();
       mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        loadLocation="done";
}

現在,此方法displayCurrentLocation()僅在打開地圖屏幕時調用1次。 嘗試這個。

public  void displayCurrentLocation() {
float zoom = map.getCameraPosition().zoom;
        CameraPosition cameraPosition = new CameraPosition.Builder().
                target(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).
                zoom(zoom ).
                bearing(0).
                build();
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}

暫無
暫無

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

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