Google地图缩放级别

时间:2016-02-02 06:15:24

标签: java android google-maps

我正在使用该代码在地图中显示当前位置:

    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));
    }
}

如果我在几秒钟后放大缩放,则返回到它的起始位置。我知道这是因为我的听众的缩放(15),但有没有可能不这样做?如果使用将放大并将开始行走我不想失去我的缩放级别

2 个答案:

答案 0 :(得分:2)

在类

中创建一个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 :(得分: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));
}