Вычисление ограничивающего прямоугольника с использованием Javascript - PullRequest
3 голосов
/ 29 июня 2010

У меня есть значения широты / долготы и значения расстояния.Мне нужно рассчитать ограничивающую рамку с указанным местоположением в качестве центра.так что если расстояние составляло 200 метров, то прямоугольник должен быть на 200 метров впереди, сзади, слева и справа.

Как мне сделать это с помощью JavaScript?

Ответы [ 3 ]

3 голосов
/ 30 июня 2010

Вот несколько полезных функций JavaScript для работы с широтой и долготой:

http://www.movable -type.co.uk / скрипты / latlong.html

Для ограничения рамки вокруг точки, простая модификация с использованием вышеупомянутой библиотеки javascript может быть:

LatLon.prototype.boundingBox = function (distance)
{
    return [
        this.destinationPoint(-90, distance)._lon,
        this.destinationPoint(180, distance)._lat,
        this.destinationPoint(90, distance)._lon,
        this.destinationPoint(0, distance)._lat,
    ];
}

(Используется "Расчетная точка с указанным расстоянием и азимутом от начальной точки" расчет.)

3 голосов
/ 30 июня 2010

Вам нужно перевести свою координату широта / долгота в значение x / y в проекции карты, которую вы используете, затем вы можете рассчитать свой ограничивающий прямоугольник.

Я не очень хорошо знаю API Карт Google и точно не знаю, что вы хотите сделать со своей коробкой. Но, возможно, GBounds , GMercatorProjection и GLatLngBounds могут быть полезны. А если API Карт Google не поддерживает расчеты для используемой вами проекции карты, то может быть полезно использовать Proj4js . И, может быть, вы хотите прочитать о Карта проекций . Карты Google по умолчанию используют проекцию Меркатора .

0 голосов
/ 30 июня 2010

Если вы используете V3 API , вы можете использовать Прямоугольник и Круг . См. Краткое описание и примеры этого блоггера:

http://apitricks.blogspot.com/2010/02/rectangle-and-circle-of-v3.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...