Мне нужно преобразовать координаты X, Y в Широту и Долготу. Я прочитал проекции карты Википедии, похожие форумы по стеку, применил свои собственные решения и все еще не работал.
Координаты, которые я получаю из моей формулы, неверны, Долгота приемлема, но Широта нет. Я не вижу, где мои искажающие данные неправильны.
Точка X, Y берется из JLayeredPane с размером фонового изображения карты, как только на этом изображении карты будет выпущено меньшее изображение, точка взята .
public void mouseReleased(MouseEvent e) {
DM.setUpCoordinates(layeredPane.getComponent(index-1).getLocation());
}
После этого я пытаюсь правильно рассчитать широту и долготу проекции. У меня есть следующие данные:
- X, координаты Y с карты
- Общая ширина и высота с карты
- Широта и долгота в центре карты
То, что я пробовал до сих пор:
Попытка Equirect angular проекция
public void setUpCoordinates(Point p) {
//Equirectangular projection: optimal for small streets
Long = ((p.getX())/(6371000*Math.cos(MG.getLati())))+MG.getLongi();
Lat = (((p.getY())/6371000)+MG.getLati());
}
Я также попытался реализовать проекцию Меркатора с по этой ссылке с очень небольшим или безуспешным результатом.
Я знаю, что я не использую общую ширину и высоту с карты в моих формулах, и это может быть ошибкой, но Я не знаю, как его использовать!
любая помощь, как преобразовать из (x, y) в (широта, долгота)?
Спасибо,