Fix map syncrhonization

This commit is contained in:
Victor Shcherb 2012-06-30 15:28:10 +02:00
parent 92f0178c66
commit c9c7c38d1a

View file

@ -774,10 +774,10 @@ public class MapActivity extends AccessibleActivity implements IMapLocationListe
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (isMapLinkedToLocation()) { if (isMapLinkedToLocation()) {
if(settings.AUTO_ZOOM_MAP.get() && location.hasSpeed()){ if(settings.AUTO_ZOOM_MAP.get() && location.hasSpeed()){
int z = defineZoomFromSpeed(location.getSpeed(), mapView.getZoom()); float z = defineZoomFromSpeed(location.getSpeed(), mapView.getZoom());
if(mapView.getZoom() != z && !mapView.mapIsAnimating()){ if(Math.abs(mapView.getZoom() - z) > .33f){
// prevent ui hysteresis (check time interval for autozoom) // prevent ui hysteresis (check time interval for autozoom)
if(Math.abs(mapView.getZoom() - z) > 1 || (now - lastTimeAutoZooming) > 6500){ if(now - lastTimeAutoZooming > 5000){
lastTimeAutoZooming = now; lastTimeAutoZooming = now;
mapView.setZoom(z); mapView.setZoom(z);
} }
@ -794,6 +794,7 @@ public class MapActivity extends AccessibleActivity implements IMapLocationListe
mapView.setRotate(-previousSensorValue); mapView.setRotate(-previousSensorValue);
} }
} }
mapView.setLatLon(location.getLatitude(), location.getLongitude());
} else { } else {
if(!mapLayers.getMapInfoLayer().getBackToLocation().isEnabled()){ if(!mapLayers.getMapInfoLayer().getBackToLocation().isEnabled()){
mapLayers.getMapInfoLayer().getBackToLocation().setEnabled(true); mapLayers.getMapInfoLayer().getBackToLocation().setEnabled(true);
@ -812,7 +813,7 @@ public class MapActivity extends AccessibleActivity implements IMapLocationListe
mapView.refreshMap(); mapView.refreshMap();
} }
public int defineZoomFromSpeed(float speed, int currentZoom){ public float defineZoomFromSpeed(float speed, int currentZoom){
DisplayMetrics metrics = new DisplayMetrics(); DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics); getWindowManager().getDefaultDisplay().getMetrics(metrics);
@ -820,7 +821,7 @@ public class MapActivity extends AccessibleActivity implements IMapLocationListe
//correct for roughly constant "look ahead" distance on different screens, see Issue 914 //correct for roughly constant "look ahead" distance on different screens, see Issue 914
int screenSizeCorrection = (int)Math.round(Math.log(((float)metrics.heightPixels)/320.0f) / Math.log(2.0f)); int screenSizeCorrection = (int)Math.round(Math.log(((float)metrics.heightPixels)/320.0f) / Math.log(2.0f));
if(speed < 5f/3.6){ if(speed < 7f/3.6){
return currentZoom; return currentZoom;
// less than 23: show zoom 17 // less than 23: show zoom 17
} else if(speed < 23f/3.6){ } else if(speed < 23f/3.6){