6
我想學習android,並使用新的googlemaps v2 api與應用程序一起玩。地圖api2 animateCamera速度問題
我有幾個菜單項,其中一個放大到當前位置,一個最終會放大到另一個位置。第一個(show_horizon代碼如下)使地圖旋轉,第二個將地圖設置爲靜態,屏幕頂部爲北。
我已經設置它們都有6秒的延遲,但show_horizon()似乎忽略了速度設置,而show_iss()尊重它。
此外,一旦在旋轉模式下,如果我滾動有關地圖,並觸發show_horizon()它現在將尊重速度設置。
因此,當我從非旋轉切換到旋轉時,它似乎只忽略代碼,但當我走另一條路時,它會尊重它。我試過在中斷相機動畫的情況下切換時停止偵聽器,但它沒有區別?
歡迎任何線索或想法。
謝謝
這是代碼。
我有一個傳感器監聽器獲取手機的軸承是這樣的:
private SensorEventListener get_bearing = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
float azimuth = event.values[0];
set_bearing(azimuth);
}
};
private void set_bearing(float azimuth) {
if (!rotate_view) {
bearing = 0;
} else {
if (bearing != Math.round(azimuth)) {
bearing = Math.round(azimuth);
update_map();
}
}
}
和幾個方法改變映射到旋轉或不:
private void show_horizon() {
current_pos = new LatLng(gps.getLatitude(), gps.getLongitude());
rotate_view = true;
tilt = 30;
zoom_level = 14;
stop_listener();
update_map(6000);
start_listener();
}
private void show_iss() {
rotate_view = false;
bearing = 0;
tilt = 0;
update_map(6000);
}
和我的代碼更新相機位置:
private void update_map() {update_map(100);}
private void update_map(int speed) {
if (current_pos != null) {
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(current_pos)
.zoom(zoom_level)
.bearing(bearing)
.tilt(tilt)
.build();
gmap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), speed, null);
}
}