位置从Skobbler地图中的某个位置立即更改为我当前的位置

时间:2016-10-05 10:56:44

标签: android skmaps skobbler-maps

我是Skobbler map的新人。在我的Skobbler map中,我使用onCurrentPositionUpdate方法获取当前位置。

SKCoordinateRegion region = new SKCoordinateRegion();
        region.setCenter(currentPosition.getCoordinate());
        region.setZoomLevel(13);
        mapView.changeMapVisibleRegion(region, true);

所以,它显示了我当前的位置。

enter image description here

当我通过拖动地图移动距离当前位置一定距离时:

enter image description here

但是,在4或5秒后,它会立即返回我当前的位置。可以采取什么措施来阻止这种移动,因为我只想在按下按钮后返回当前位置。在我的按钮中,我使用:

 @OnClick(R.id.fab_gps)
    public void goToMyGpsLocation(View view) {
        if (mapView != null && currentPosition != null) {
            mapView.getMapSettings().setCurrentPositionShown(true);
       } else{
            if(Helper.isGPSEnabled(this)){
                requestCurrentPositionProvider();
           }else{
                Helper.alertbox("GPS not enabled", "Please enable gps before you are directed to your current location", this);
            }
        }
    }

在我的requestCurrentPositionProvider方法中:

public void requestCurrentPositionProvider(){


        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            Permissions.requestPermission(this, LOCATION_PERMISSION_REQUEST_CODE,
                    Manifest.permission.ACCESS_FINE_LOCATION, true);
        } else{
            if(mapView != null) {
                mapView.getMapSettings().setCurrentPositionShown(true);

            }
            if(Helper.isGPSEnabled(this)){
                showSnackBar(findViewById(android.R.id.content));

                currentPositionProvider = new SKCurrentPositionProvider(this);
                currentPositionProvider.setCurrentPositionListener(this);
                currentPositionProvider.requestLocationUpdates(MapUtils.hasGpsModule(this), MapUtils.hasNetworkModule(this), false);

            }

            else {
             Helper.alertbox("GPS not enabled", "Please enable gps before you are directed to your current location", this);
                }

Camera运动之类的变化如此之快。我怎么阻止它?可以在onClick方法上做什么,以便在仅按下按钮后返回当前位置?

2 个答案:

答案 0 :(得分:0)

mapView.animateCamera(CameraUpdateFactory.zoomTo(16), 5000, null);

这有助于为相机设置动画5秒钟,您可以根据需要更改时间。

否则试试这个

mapView.animateToLocation(new SKCoordinate(37.7765, -122.4200), 5000);

答案 1 :(得分:0)

我了解您的onCurrentPositionUpdate()方法包含:

SKCoordinateRegion region = new SKCoordinateRegion();
region.setCenter(currentPosition.getCoordinate());
region.setZoomLevel(13);
mapView.changeMapVisibleRegion(region, true);

当然,这会根据您当前位置更新每个"当前位置更新"即位置更新。

您已请求GPS位置更新。如果我已经正确理解那些将会触发onCurrentPositionUpdate()方法。 (从代码片段中看不到它,但不是Skobbler地图应用的工作方式......)

即使您实际上没有移动,GPS位置可能会有一些波动,并且该方法可能每隔几秒就被调用一次。

如果您同时拖动地图,它将居中回到当前位置"在每个GPS位置更新。

因此,如果您想保留手动选择的地图状态,请不要将其置于onCurrentPositionUpdate()中每个位置更新的真实当前位置。