Я пытаюсь создать простую библиотеку для рисования видов поверх карты.Эта библиотека уже может добавлять элементы карты, такие как маркеры, полилинии и т. Д., Которые фактически являются представлениями 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, которые не учитывают уровень масштабирования или область просмотра на экране.