在Google地图中进行动画播放时,相机更改会一次又一次地被调用。它是否因为动画尚未完成而被触发?如果是这样,如何获得通知动画的回调已经停止。
这是我的代码:
map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
showLocations(location);
}
});
private void showLocations() {
for (int i = 0; i < 2; i++) {
Marker m = map.addMarker(new MarkerOptions().position(latlngs.get(i))
.icon(BitmapDescriptorFactory.fromResource(R.drawable.some_icon)));
markers.add(m);
}
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker marker : markers) {
builder.include(marker.getPosition());
}
LatLngBounds bounds = builder.build();
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, 100);
map.animateCamera(cameraUpdate);
}
答案 0 :(得分:1)
调用map.animateCamera()
会导致OnCameraChangeListener
被调用,因此您无法更改相机,除非您计划将侦听器作为其逻辑的一部分进行删除。例如:
map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
map.setOnCameraChangeListener(null);
showLocations(location);
}
});