Введение
Я конвертирую игровые координаты в координаты карты , у меня настроены плитки и карта работает.
Я показываю транспортные средства игрока налистовка (та же проблема, что и с mapbox), преобразование координат для оси x правильное (визуально), но неверно ось y (широта).
Что я пробовал
Япытаясь преобразовать игровые координаты в диапазоне от 3000 до -3000 на X и 3000 до -3000 на Y Я считаю, что координаты картыдиапазон от 180 до -180 в X - долгота и 85 до -85 в Y - широта
В настоящее время я использую эту формулу для вычисления ее координат на карте, но я не могу понять, что я делаю здесь неправильно.
Я поставил u
динамически, чтобы я мог легко проверить это. .
Обратите внимание, что возвращаемое значение имеет инвертированные x и y, потому что именно так выглядит листовка ...
function getLatLngFromPos(x, y, u = 85) {
height = 3000; // of the game map
width = 3000; // of the game map
return [(y / height) * u, (x / width) * 180];
}
Результаты (~ означает не рассчитано, но угадано):
getLatLngFromPos(1482.47 , -1731.9)
-> [-49.0705, 88.9482] Должно быть: ~ [-71.519235, 88.813477]
getLatLngFromPos(1378.4,-1876.25)
-> [-53.16041666666666,82.70400000000001] Должно быть: ~ [-73.758964, 81.958008]
Если вам нужны плитки, вот код к этому http://145.239.116.170/app-assets/images/maptiles/sanandreas.{z}.{x}.{y}.png
Примечание: MaxZoom равно '4'
Результаты
Неверный результат:
The Иконка автомобиля на карте должна идти стрелка, а также есть дополнительная информация, например, центр карты. (Также это повторяет по оси X, которую я хочу удалить)
ScreenShot: (https://i.ibb.co/HNHgRLC/Shared-Screenshot.jpg)
Гипотеза
Я думаю, что ось Y на этих картах имеет некоторыесвоего рода ускорение к краям ... Это происходит из-за проекции листовки по умолчанию. Также есть реализация этого для Google Maps API по адресу (https://github.com/ikkentim/SanMap/blob/master/js_src/js/SanMap.js) Но Google Maps обманывают, взимая деньги ...
Теперь я предполагаю, что мне придется создать какую-то проекцию, как в реализации SanMap, Как я могу создать свою собственную Проекцию для Mapbox или Leaflet?