Алгоритм проекции Google Maps - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь создать простую библиотеку для рисования видов поверх карты.Эта библиотека уже может добавлять элементы карты, такие как маркеры, полилинии и т. Д., Которые фактически являются представлениями Android, чтобы пользователи могли легко анимировать их.Для этого при перемещении карты каждый элемент использует метод toScreenLocation () из класса Projection.Этот метод «преобразует» положение широты / долготы элемента карты в координаты X, Y на экране.

К сожалению, этот метод возвращает объект Point при вычислении проекции.Таким образом, каждый вызов метода выделяет объект Point, в результате чего происходит много выделений объектов, когда происходит перемещение карты.При тестировании этой библиотеки с большим количеством элементов карты из-за такого большого количества объектов выделяется значительное количество кадров.

Я хотел бы создать такой метод:

fun positionToScreenLocation(dest: FloatArray, position: LatLng) {
   ... algorithm that converts the position ...
   ... to x and y coordinates on the screen ...
   ...   and store them to the dest array   ...
}

Что я уже знаю, так это то, что Карты Google используют проекцию Web Mercator.Как я могу реализовать такой метод?Все руководства и википедии объясняют преобразование координат широты / долготы в координаты слова x и y, которые не учитывают уровень масштабирования или область просмотра на экране.

...