2016-03-02 6 views
0

Для Android-приложения Я создал пользовательский оверлей здесь, чтобы отображать на карте различные элементы игровых данных.Osmdroid, Custom Overlay Drawing

В целом накладка работает нормально и плавно!

Однако существует одно геометрическое созвездие, которое не работает должным образом: некоторые объекты внутри наложения не привязаны к геокоординатам, а относятся к текущему местоположению пользователя. Теперь случается так, что Osmdroid выборочно перерисовывает экран. Когда экран не фокусируется на местоположении пользователя, связанный с ним пользовательский материал не обновляется правильно: новые материалы попадают только в какой-то выборочный прямоугольник, старый материал не удаляется за пределами этого прямоугольника.

До сих пор мне не удалось найти механизм для передачи требуемого перерисовки наложения на базовую систему Osmdroid? То есть для аннулирования окружения текущего местоположения пользователя? Любой намек, подсказка или указатель?

ответ

0

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

Я по-прежнему борюсь с координатами, чтобы сделать правильные звонки invalidate(left, top, right, buttom), потому что мои обновления действительно происходят при изменении местоположения, и мне непонятно, нужно ли измерять экранный пиксель карты, чтобы быть недействительным, относительно старого местоположения или новый. Это вопрос времени.

Однако, взяв байт CPU и выдавая postInvalidate(), он выглядит просто так, как предполагалось, и неясно, насколько производительность действительно потеряна.

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