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