2012-12-23 14 views
6

私はアンドロイドを学び、新しいgooglemaps v2 apiを使ってアプリを試してみようとしています。maps api2 animateCameraスピードの問題

私はいくつかのメニュー項目を持っています.1つは現在の位置にズームし、もう1つは最終的に別の位置にズームします。最初のコード(コードではshow_horizo​​n)はマップの回転を有効にし、2番目のマップはマップの北を画面の上部で静的に設定します。

私はそれらに両方とも6秒の遅延があるように設定しましたが、show_iss()はそれを尊重しながら速度設定を無視しているようです。

また、回転モードでは、地図をスクロールしてトリガーshow_horizo​​n()を実行すると、速度設定が反映されます。

私は非回転から回転に切り替えるときにコードを無視するように見えますが、逆に進むと、それを尊重します。カメラのアニメーションを中断している場合にリスナーを切り替えることを試みましたが、違いはありませんでしたか?

すべての手がかりや考えを歓迎します。

ありがとう

ここにコードがあります。

私はこのような携帯電話の軸受け取得センサーリスナーがあります回転したりしないようにマップを変更するための

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); 
    } 
} 

答えて

13

多くの試行錯誤の後、私のために働いた:

public void openMarker(Marker marker) { 

    marker.showInfoWindow(); 
    CameraUpdate center = CameraUpdateFactory.newLatLng(marker.getPosition()); 
    mMap.animateCamera(center, 400, null); 
} 

mMapはもちろん私のGoogleマップオブジェクトです。

mMap = ((SupportMapFragment)(getFragmentManager().findFragmentById(R.id.googleMap))).ge‌​tMap(); 
関連する問題