私はアンドロイドを学び、新しいgooglemaps v2 apiを使ってアプリを試してみようとしています。maps api2 animateCameraスピードの問題
私はいくつかのメニュー項目を持っています.1つは現在の位置にズームし、もう1つは最終的に別の位置にズームします。最初のコード(コードではshow_horizon)はマップの回転を有効にし、2番目のマップはマップの北を画面の上部で静的に設定します。
私はそれらに両方とも6秒の遅延があるように設定しましたが、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);
}
}