2012-06-09 2 views
1

Предположим, прямоугольник, определяемый юго-западной широты/ЛГН (а, б) и северо-восточной широты/LNG (с, d) координаты:Maps: это широта/ЛГН внутри прямоугольника

  c,d 
|-----------| 
|   | 
|   | 
|   | 
|-----------| 
a,b 

Как определить, находится ли другая пара координат x, y внутри этого прямоугольника? Верно ли это:

a < x < c AND b < y < d <-- if true, it means x,y are in the rectangle??? 

Я использую API Карт Google и получаю от них эти значения lat/lng. Мне просто нужно знать, действительно ли x, y внутри прямоугольника.

+0

Если широту/долготу, это на самом деле не прямоугольник, особенно по мере приближения к полюсам. – hatchet

+0

polygon then :) – StackOverflowNewbie

ответ

1

Сначала создайте LatLngBounds с юго-западного и северо-восточного коордов, затем вызовите метод contains, проходящий в LatLng для проверки.

https://developers.google.com/maps/documentation/javascript/reference#LatLngBounds

+0

О, я хотел сам сделать математику и не полагаться на API – StackOverflowNewbie

+0

Я думаю, что это было бы очень сложно, особенно если прямоугольник пересекает экватор или простой меридиан. – puckhead

+0

Экватор не имеет значения. Столбы имеют значение, равно как и международная дата-линия. –

1

Да. Один из способов закодировать это

if (x < a) return false; 
if (x > c) return false; 
if (y < b) return false; 
if (y > d) return false; 
return true; 

Обратите внимание, что мой путь считает точку, чтобы быть «в» прямоугольника, если это именно то, на границе, а также. Вы можете или не можете считать это правдой.

+0

Это будет работать для любого прямоугольника, нанесенного на любое место в мире, не так ли? Я просто не уверен, что lat/lgn построена как обычный граф. Я предполагаю, что это так. Не уверен, правильно ли это. – StackOverflowNewbie

+0

Ну, понятие «прямоугольник» становится немного странным возле полюсов, потому что, если ваша верхняя широта 90 или -90, «прямоугольник» фактически становится треугольником и в зависимости от того, что вы делаете, любая точка на 90 или -90 «внутри» формы, даже если долготы не совпадают. Опять же, это сильно зависит от того, считаете ли вы границы «в». –

+0

Еще одна вещь, о которой нужно опасаться, - это прямоугольники, которые вы намереваетесь охватывать Международную линию дат (долгота +180 или -180). Нет простого способа сделать эти работы - я имею тенденцию создавать два прямоугольника: один в положительных долготах и ​​один в отрицательной долготе, чтобы упростить и недвусмысленно. –