GoogleMaps CancelableCallback不会更改我的相机角度和位置.我做错了什么



我已经添加了相机位置和动画回调,它们放在我的onMapReady((中。

CameraPosition cameraPosition =
new CameraPosition.Builder()
.target(new LatLng(currentRoute.locations.get(1).getLatitude(),
currentRoute.locations.get(1).getLongitude()))
.tilt(60)
.bearing((float)currentRoute.getRouteEdges().getFirst().getHeading(currentRoute.getStart(), currentRoute.getFinish())-40)
.zoom(20)
.build();
CameraUpdate update = (CameraUpdateFactory.newCameraPosition(cameraPosition));
turnByTurnMap.animateCamera(update, new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
if(currentPosition<currentRoute.locations.size()-1){
float bearing = HelperMethods.latLongToLocationDouble(currentRoute.locations.get(currentPosition).getLatitude(),
currentRoute.locations.get(currentPosition).getLongitude()).bearingTo(HelperMethods.latLongToLocationDouble(currentRoute.locations.get(currentPosition+1).getLatitude(),
currentRoute.locations.get(currentPosition+1).getLongitude()));
CameraPosition cameraPosition =
new CameraPosition.Builder()
.target(new LatLng(currentRoute.locations.get(currentPosition).getLatitude(),
currentRoute.locations.get(currentPosition).getLongitude()))
.tilt(60)
.bearing(bearing)
.zoom(20)
.build();
currentPosition++;
}
}
@Override
public void onCancel() {
}
});

为什么相机不沿着位置移动。位置阵列中有8个位置。为什么相机不更新?

编辑:我已经将animateCamera添加到回调中,但是回调从未被调用过。我已经重新发布了当前实现,我已经登录到回调内部,它从未被调用?

CameraPosition cameraPosition =
new CameraPosition.Builder()
.target(new LatLng(currentRoute.locations.get(1).getLatitude(),
currentRoute.locations.get(1).getLongitude()))
.tilt(60)
.bearing((float)currentRoute.getRouteEdges().getFirst().getHeading(currentRoute.getStart(), currentRoute.getFinish())-40)
.zoom(20)
.build();
CameraUpdate update = (CameraUpdateFactory.newCameraPosition(cameraPosition));
turnByTurnMap.animateCamera(update,
3000,
routeAnimationCancelableCallback);
routeAnimationCancelableCallback = new GoogleMap.CancelableCallback() {
@Override
public void onCancel() {
}
@Override
public void onFinish() {
Log.d(TAG, "onFinish: here");
if(currentPosition<currentRoute.locations.size()-1){
float bearing = HelperMethods.latLongToLocationDouble(currentRoute.locations.get(currentPosition+1).getLatitude(),
currentRoute.locations.get(currentPosition+1).getLongitude()).bearingTo(HelperMethods.latLongToLocationDouble(currentRoute.locations.get(currentPosition+1).getLatitude(),
currentRoute.locations.get(currentPosition+2).getLongitude()));
CameraPosition cameraPosition =
new CameraPosition.Builder()
.target(new LatLng(currentRoute.locations.get(currentPosition+1).getLatitude(),
currentRoute.locations.get(currentPosition+1).getLongitude()))
.tilt(60)
.bearing(bearing)
.zoom(10)
.build();
CameraUpdate update = (CameraUpdateFactory.newCameraPosition(cameraPosition));
turnByTurnMap.animateCamera(update,
3000,
routeAnimationCancelableCallback);
currentPosition++;
}

}
};

考虑到第二个代码post,只需在设置animateCamera后将初始调用移动到routeAnimationCancelableCallback即可。这还包括在回调中调用CCD_4的初始修复。

PD_4

相关内容

最新更新