2016-03-03 3 views
0

Мое намерение - показать фрагмент, если есть что показать и скрыть его, если его нет.StreetViewPanorama(). GetLocation() непоследовательные результаты?

Моей проблема заключается в том, что, учитывая те же координаты:

  • На первую попытку, mStreetView.getStreetViewPanorama().getLocation() имеет ненулевой ответ и показывает вид. Однако Fragment черный (пустой).
  • При второй попытке mStreetView.getStreetViewPanorama().getLocation() имеет нулевой ответ, и вид остается скрытым.

Мой код:

mStreetView.getView().setVisibility(View.GONE); 
mStreetView.getStreetViewPanorama().setPosition(customMarker.getPosition()); 
if (mStreetView.getStreetViewPanorama().getLocation() != null && 
     mStreetView.getStreetViewPanorama().getLocation().links != null) { 
    mStreetView.getView().setVisibility(View.VISIBLE); 
} 

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

Edit:

Это координатные функции, как и ожидалось, и показывает вид правильно населенную: 33.6645598, -111,9253126

Эта координата показывает вид, но он черный, а потом возвращает нуль: 33,6492448, -111,9354228

Эти результаты согласуются.

Edit2:

Я попытался использовать OnStreetViewPanoramaReadyCallback(), однако результаты были одинаковыми.

Код теперь:

mStreetView.getView().setVisibility(View.GONE); 
mStreetView.getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback() { 
    @Override 
    public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { 
     streetViewPanorama.setPosition(customMarker.getPosition()); 
     if (streetViewPanorama.getLocation() != null && streetViewPanorama.getLocation().links != null) { 
      mStreetView.getView().setVisibility(View.VISIBLE); 
     } 
    } 
}); 

ответ

0

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

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

Я не знаю, если это все-таки текущее поведение, но вы можете прочитать, что я сделал здесь

Android StreetView check if there is any view for given location

Редактировать

, как представляется, быть onStreetViewPanoramaReady обратного вызова в настоящее время, вы используете что?

+0

Я не использую 'onStreetViewPanoramaReady'. Я предположил, что, поскольку я создал представление намного раньше в программе, у меня не было бы условий гонки. Я также предположил, что условие гонки не является проблемой, поскольку в некоторых местах функциональность работает по назначению и будет правильно отображать вид на улицу, а в других - нет. – nukeforum

+0

Я попытался использовать этот обратный вызов, но он не дал никаких других результатов. – nukeforum

0

Если вы используете 'getLocation()' перед тем, как было создано представление, оно вернет значение null. Рекомендуется подождать, пока не будет создан вид. Кроме того, у вас должно быть create a callback, чтобы вы знали, когда будет открыт уличный обзор.

getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback(){ 
@Override 
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { 

} 
}) 
+0

Прошу прощения за грубость, но, пожалуйста, прочитайте мое сообщение. Я уже реализовал этот вызов. Это не исправить мою проблему. – nukeforum

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