我是Skobbler map
的新人。在我的Skobbler map
中,我使用onCurrentPositionUpdate
方法获取当前位置。
SKCoordinateRegion region = new SKCoordinateRegion();
region.setCenter(currentPosition.getCoordinate());
region.setZoomLevel(13);
mapView.changeMapVisibleRegion(region, true);
所以,它显示了我当前的位置。
当我通过拖动地图移动距离当前位置一定距离时:
但是,在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
方法上做什么,以便在仅按下按钮后返回当前位置?
答案 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()
中每个位置更新的真实当前位置。