我已经添加了放置在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++;
}
}
};发布于 2020-12-21 02:22:14
考虑到第二个代码发布,只需在设置routeAnimationCancelableCallback之后将初始调用移动到animateCamera。这还包括在回调中调用animateCamera的初始修复。
// initial call to animateCamera was here...
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++;
}
}
};
// and moved to here...
turnByTurnMap.animateCamera(update,
3000,
routeAnimationCancelableCallback);https://stackoverflow.com/questions/65359906
复制相似问题