Преобразовать местоположение пикселя в широту / долготу и наоборот

Мне нужно преобразовать значения широты и долготы в позиции пикселей, а также сделать наоборот. Я нашел много решений, чтобы перейти от lat/lng->pixel, но не могу найти ничего наоборот.

Пара заметок:

  • Карта фиксированного размера, без масштабирования, без тайлов.
  • Мне не нужно ничего сверхточного, это не важно.
  • Желательно проекция меркатора, но не обязательно. Я на самом деле не отображаю результат. (Любая 2D проекция)
  • Я не могу положиться ни на один веб-интерфейс API, т. Е. На Google Maps нет

Подойдет решение практически на любом языке программирования, если оно не зависит от API-интерфейсов конкретной платформы.

Это пример перехода от lat/lng->pixel:

var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT / 180));
var x = Math.round((lng + 180) * (this.MAP_WIDTH / 360));

1 ответ

Решение
var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT / 180));
var x = Math.round((lng + 180) * (this.MAP_WIDTH / 360));

Используйте некоторую алгебру, и я вышел с:

var lat=(y/(this.MAP_HEIGHT/180)-90)/-1
var lng = x/(this.MAP_WIDTH/360)-180

Не совсем уверен в этой математике, так как это было сделано в моей голове, но это должно сработать, просто сначала проверь их.

Другие вопросы по тегам