2012-05-09 2 views
0

Я использую MyLocationOverlay, чтобы обновить карту с местоположением пользователей по мере их вождения. Я пытаюсь реализовать текстовое представление, которое показывает их текущее местоположение с точки зрения названия улицы, города и штата. Все это работает нормально, но кажется, что частота обновления MyLocationOverlay приводит к тому, что карта отстает и замерзнет на секунду или два. Я не уверен, что метод textsetText вызывает его замораживание или количество вызовов метода. Каков правильный способ обновления пользователя с именем города и состояния? Я использую новый поток, это правильный путь? Вот мой код в onLocationChanged методе MyLocationOverlay:Android: Лучший способ сделать обратное геокодирование в MyLocationOverlay?

@Override 
public synchronized void onLocationChanged(Location location) { 
    super.onLocationChanged(location); 
    mLocation = location; 
    // only move to new position if enabled and we are in an border-area 
    if (this.isMyLocationEnabled() && animateToCurrentLocation) { 
     mMapController.animateTo(getMyLocation()); 
    } 

    this.runOnFirstFix(new Runnable() { 
     public void run() { 
      Log.d(TAG, "Running"); 
      if (mLocation != null) { 
       Geocoder gc = new Geocoder(mContext, Locale.getDefault()); 

       try 
       { 
        List<Address> addresses = gc.getFromLocation(mLocation.getLatitude(), mLocation.getLongitude(), 1); 
        if (addresses != null && addresses.size() > 0) 
        { 
         txtStreetAddress.setText(addresses.get(0).getThoroughfare() + " " + addresses.get(0).getLocality() + ", " + addresses.get(0).getAdminArea()); 
        } 
       } catch (IOException e) 
       { 

       } 
      } 
     } 
    }); 
} 

ответ

0

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

+0

Должен ли я быть геокодированием в отдельном потоке? или это целесообразно сделать в потоке пользовательского интерфейса? – user1347026

+0

его блокирующий вызов так defo от потока пользовательского интерфейса :) – Dori

Смежные вопросы