Вот что я пытаюсь сделать. У меня около 160 достопримечательностей. Пользователь вводит свой адрес (почтовый индекс, полный адрес и т. Д.), Который я использую Google для геокодирования. Затем я создаю карту Google с центром вокруг этой точки и добавляю маркер для каждой из моих точек интереса на карту (используя MarkerManager). Пока все хорошо.
Я хочу отобразить список элементов рядом с картой, которые соответствуют отображаемым маркерам. Когда пользователь перетаскивает окно или увеличивает или уменьшает его, или что-то еще, я хочу обновить этот список. Если одновременно отображается слишком много элементов, я хочу отобразить сообщение для пользователя.
Каков наилучший способ сделать это? Я попытался добавить слушателя в MarkerManager, чтобы при его изменении я мог определить, какие маркеры все еще отображаются. Однако событие, похоже, не сработало так, как я ожидал, т. Е. При изменении отображаемых маркеров. Кроме того, я сомневаюсь, что циклирование более 160 таких маркеров каждый раз будет эффективным.
GEvent.addListener(mgr, "changed",
function(bounds, markerCount)
{
var visibleBounds = map.getBounds();
for (var i = 0; i < gmarkers.length; i++)
{
//alert(gmarkers[i].getPoint());
if (visibleBounds.containsLatLng(gmarkers[i].getLatLng())) {
// this will need to be replaced with an ajax call
// to get the details from the server
strHtml += "<div>Another item</div>";
count ++;
}
}
alert(count);
});
Каков наилучший способ сделать это?
ОБНОВЛЕНИЕ : этот код работает, но событие, похоже, срабатывает только при перемещении карты на определенное минимальное расстояние. Поэтому, если пользователь перетаскивает карту на небольшое расстояние, событие, похоже, не срабатывает.