Во-первых, чтобы получить верхнюю левую и нижнюю правую точки, вам нужно использовать некоторую геометрию. Эта страница: https://gis.stackexchange.com/questions/2951/algorithm-for-offsetting-a-latitude-longitude-by-some-amount-of-meters - отличный пример того, как точно преобразовать метры в десятичные градусы.
Например, чтобы получить верхнюю левую точку, вы начинаете со средней точки линии, и у вас есть общая длина линии, вам нужно разделить длину линии на 2, а затем преобразовать эту длину от метров до десятичных градусов, затем добавьте координату X на эту величину. Это даст вам верхний правый угол. Повторите это для нижнего левого угла, вычитая эту сумму вместо вычитания.
var upperMiddlePoint = [30,50];
var segmentLength = 5000;
var northEastPoint = upperMiddlePoint;
var northEastPoint.x = northEastPoint.x + ((segmentLength / 2) * DECIMAL_DEGREES_PER_METER)
Здесь есть быстрый и простой ответ: Простые вычисления для работы с расстоянием широта / долгота + км?, в котором описано, как получить значение DECIMAL_DEGREES_PER_METER в приведенном выше фрагменте.
Чтобы создать объект LatLngBounds
для представления границ вашего прямоугольника. API здесь.
var bounds = new L.LatLngBounds(southWestPoint, northEastPoint);
Затем используйте функцию LatLngBounds.contains()
, как описано здесь, чтобы определить, соответствует ли ваша точка зрения эти границы.
var contains = bounds.contains([50, 30]);
if (contains) {
doStuff();
}
Логическое значение contains
будет истинным, если границы содержат точку, и ложным, если нет.
person
Patrick D
schedule
05.09.2013