Próbuję nauczyć się Androida i grać z aplikacją za pomocą nowego api googlemaps v2.map api2 animateCamera speed problems
Mam kilka pozycji menu, jeden przybliża do bieżącej lokalizacji, a jeden z nich zostanie powiększony w inne miejsce. Pierwszy (show_horizon w kodzie poniżej) umożliwia obrót mapy, drugi ustawia mapę na statyczną z północą u góry ekranu.
Ustawiłem je tak, aby miały długie 6-sekundowe opóźnienia, ale show_horizon() wydaje się zignorować ustawienie prędkości, podczas gdy show_iss() respektuje to.
również, raz w trybie obracania, jeśli przewińę o mapę i wyzwalacz show_horizon(), będzie on teraz przestrzegał ustawienia prędkości.
Wygląda więc na to, że ignoruję kod tylko wtedy, gdy przełączam się z nieobrotowego na obrotowy, ale szanuję go, gdy przechodzę w drugą stronę. Próbowałem zatrzymać słuchacza podczas przełączania w przypadku, gdy przerwał on animację kamery, ale nie robiło to żadnej różnicy?
Wszelkie wskazówki i pomysły są mile widziane.
dziękuję
Oto kod.
Mam słuchacza czujnika dostaniem łożysko telefonu tak:
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();
}
}
}
i kilka sposobów na zmianę mapy do obracania lub nie:
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);
}
i mój kod do aktualizacji pozycja kamery:
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);
}
}