2012-12-23 3 views
6

나는 안드로이드를 배우려고 노력 중이며 새로운 googlemaps v2 API를 사용하여 앱을 가지고 노는 중이다.지도 api2 animateCamera 속도 문제

나는 두 개의 메뉴 항목을 가지고 있는데 하나는 현재 위치를 확대하고 다른 하나는 결국 다른 위치로 확대합니다. 첫 번째 코드는 코드가 회전 할 수있게하고, 두 번째는 북쪽이 정적 인 화면으로 설정합니다.

나는 그것들을 모두 6 초의 지연이되도록 설정했지만, show_iss()는 속도 설정을 무시하는 반면, show_iss()는 그것을 존중합니다.

도 한번 회전 모드에서지도를 스크롤하면 show_horizon() 트리거가 속도 설정을 준수합니다.

그래서 비 회전에서 회전으로 전환 할 때 코드를 무시하는 것처럼 보이지만 다른 방향으로 이동하면 코드를 무시합니다. 카메라 애니메이션을 방해하는 경우 전환 할 때 리스너를 멈추려 고 시도했지만 아무런 효과가 없습니다.

단서 또는 아이디어 환영.

감사합니다.

다음은 코드입니다. 업데이트 할

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