Карты Google: как найти маркеры внутри карты - PullRequest
3 голосов
/ 29 мая 2009

Я разделил отображение моей карты Google на количество частей. Теперь я хочу выяснить, расположены ли какие-либо маркеры внутри / любой ячейки частиц.

Любая помощь?

Дальше объяснил:

У меня есть границы карты на

map.getBounds();

метод, а затем разделить его на число под-границ.

также я поставил маркеры как

map.addOverlay(markerObject);

Теперь я хочу найти, содержит ли какие-либо маркеры в ячейках (которые я получил, разделив карту по границам).

Я разделил все границы карты на количество субграниц

Ответы [ 3 ]

0 голосов
/ 08 июня 2009

Вот альтернатива вышеуказанному решению без повторения:

Первый - насколько велики ваши под_границы? Скажите 10 градусов по широте и долготе.

Второе - положение маркера (floor (marker.lat / 10), floor (marker.lng / 10))

Третий - каждый маркер добавляется на карту и помещается в область для этого субдомена.

так (40, -78) будет лежать в ведре (4,7), т.е. в ведре ["4 ~ 7"]

Исправление: будет лежать в ведре (4, -7), т.е. в ведре ["4 ~ -7"]

, который будет содержать все маркеры от 40 до 50 лат и от -70 до -80 lng.

Вы можете использовать GLatLngBounds в качестве объекта, который содержит все эти маркеры в каждом сегменте, что даст вам хороший набор методов, таких как вычисление центра сегмента в зависимости от текущих маркеров в нем.

0 голосов
/ 11 ноября 2010

Вероятно, лучшее решение дано здесь: как узнать, находится ли точка внутри многоугольника:

Как определить, что точка находится внутри многоугольника с помощью Google Maps?

0 голосов
/ 29 мая 2009

Так что держите все маркеры в массиве. У каждого маркера есть метод get_position (). После того, как вы закончили деление карты, связанной на маленькие под-границы, вам просто нужно перебрать под-границы и проверить, есть ли внутри них маркер.
PS. Также взгляните на это , в некоторых случаях может быть полезно.


Предположим, вы находитесь в подсвязанной ячейке:

var sub_bounds = new Array();
// here you've pushed into an array the sub bounds
for ( var i = 0; i<sub_bounds.length; ++i)
{
    for ( var j = 0; j < markers.length; ++j)
    {
       var lat = markers[j].get_position( ).lat;
       var lng = markers[j].get_position( ).lng;
       if ( sub_bounds[i].sw.lat<lat && lat<sub_bounds[i].ne.lat &&
            sub_bounds[i].sw.lng<lng && lng<sub_bounds[i].ne.lng)
       // marker within cell, do whatever you need to do
    }
}
...