java - 谷歌地图缩放级别

标签 java android google-maps

我使用该代码在 map 中显示当前位置:

    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 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 次。 试试这个。

关于java - 谷歌地图缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35146340/

相关文章:

java - Hibernate:非空属性引用空值或 transient 值

java - Spring Data JPA - 用于 json 序列化的 ZonedDateTime 格式

php - 我们如何从 PHP 服务器向数千台设备(注册 ID)发送推送通知

android - 如何在 Android Studio 中运行某个 Activity ?

安卓工作室 : Can you display a view just for preview?

javascript - 获取谷歌地图上一组标记的东北 Angular 和西南 Angular

java - Ubuntu 上的 Netbeans 不保存面板位置

java - JavaFX TableView 中的属性绑定(bind)不起作用

Android map 显示从其他 Activity 中选择的点

ios - 谷歌地图折线无法完美呈现