Mapview getLatitudeSpan и getLongitudeSpan, не работающий

Иногда при попытке получить промежуток Широты или промежуток Долготы mapview с getLatitudeSpan () и getLongitudeSpan () я добираюсь 0 и 360*1E6 соответственно. Этого всегда не происходит, но это - проблема, кто-либо получил эту проблему? Какие-либо обходные решения? Я пытался использовать getProjection () также, но я получаю ту же проблему. Вот часть кода:

MapView mapView = (MapView) findViewById(R.id.mapview);
int lat = mapView.getLatitudeSpan(); // sometimes returns 0
int long = mapView.getLongitudeSpan(); // sometimes returns 360*1E6
6
задан Jan S. 19 April 2010 в 12:37
поделиться

1 ответ

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

Итак, изолируйте свой код, который зависит от этих диапазонов, в метод. Вызовите этот метод из onCreate () и AsyncTask , вероятно, как вы это делаете сегодня.Но добавьте логику обнаружения, чтобы найти недопустимые значения, затем вызовите postDelayed () в вашем MapView (или другом View ), чтобы снова вызвать ваш метод после несколько сотен миллисекунд, если значения недействительны. Вам также может потребоваться добавить какой-то счетчик, чтобы вы не могли бесконечно заниматься этим postDelayed () .

Это, конечно, взлом. Но поскольку компонент Google Maps не является открытым исходным кодом, трудно придумать что-то более надежное.

3
ответ дан 8 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: