Неправильная точка центра карты - PullRequest
0 голосов
/ 10 марта 2012

В моем приложении есть заголовок и несколько дочерних действий, в том числе преимущественно экран Google Maps.

Я недавно добавил опцию для пользователя приложения, чтобы выбрать центрирование карты на месте расположения пользователей (используя устройства droid GPS или аналогичные).

Проблема в том, что после того, как это было выбрано, а затем не выбрано, оно все еще центрируется в правильном местоположении, а затем в течение нескольких секунд меняет свое физическое местоположение.

Любые идеи, как я могу предотвратить это?

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60L, (float) 100.0, onLocationChange);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60L, (float) 100.0, onLocationChange);
    provider = locationManager.getBestProvider(criteria, false);
    location = locationManager.getLastKnownLocation(provider);

    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    location = locationManager.getLastKnownLocation(provider);
}

public void onStop() {
    super.onStop();
    locationManager.removeUpdates(onLocationChange);
    if (timer != null) {
        timer.cancel();
    }
}

@Override
public void onRestart() {
    super.onRestart();  
    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    ...
    location = locationManager.getLastKnownLocation(provider);
}

1 Ответ

0 голосов
/ 11 марта 2012

Похоже, я мой злейший враг.

Проблема в том, что я устанавливал местоположение в

LocationListener onLocationChange=new LocationListener() {
    public void onLocationChanged(Location location) {
        setMapCentre(location.getLatitude(), location.getLongitude());
        map.getController().setZoom(13 + zoomModifier);

    }

Исправление было просто добавить некоторую логику для проверки, еслипользователь хочет отцентрировать и увеличить свое местоположение.

LocationListener onLocationChange=new LocationListener() {
    public void onLocationChanged(Location location) {
        if (zoomtown.equals(" zoomme")) {
            setMapCentre(location.getLatitude(), location.getLongitude());
            map.getController().setZoom(13 + zoomModifier);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...