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

Мне нужно преобразовать значения широты и долготы в позиции пикселей, а также сделать обратное.Я нашел много решений от 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 Ответ

5 голосов
/ 11 августа 2011
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

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

...