В основном ... бизнес-логика выглядит так:
Вам необходимо получить границы от объекта карты, а затем передать их как параметры через AJAX в SQL-запрос, который выбирает записи, например, minLat / maxLat & minLng / maxLng ... они переходят в условие WHERE. Это «вырезает прямоугольник» из ваших геоданных. Вы можете изменить эти значения на 5-10%, чтобы точки, расположенные очень близко к границам, не отображались на карте (это просто косметическое исправление).
Только что нашел пример кода JS на моем диске для API Карт Google (он использует jQuery):
function loadViewport() {
var b = map.getBounds();
$.minY = b.getNorthEast().lng();
$.maxY = b.getSouthWest().lng();
$.minX = b.getSouthWest().lat();
$.maxX = b.getNorthEast().lat();
$.url = "http://www.somehost.com/data.php?mode=viewport&minX="+$.minX+"&maxX="+$.maxX+"&minY="+$.minY+"&maxY="+$.maxY;
$.ajax({type:"GET",url:$.url,dataType:"json",success: parseJSON});
}
Заполнение списка слева должно быть выполнено в функции parseJSON () ...
Условие WHERE для SQL будет выглядеть примерно так:
WHERE
(`location`.`latitude` BETWEEN ".(float)$minX." AND ".(float)$maxX.")
AND
(`location`.`longitude` BETWEEN ".(float)$maxY." AND ".(float)$minY.")
Конечно, столбцы в таблице должны иметь тип данных с плавающей точкой - иначе это точно не сработает.
Как видите, я преобразую строку в число с плавающей точкой - чтобы включить сравнение ...
Надеюсь, это поможет, код для MapQuest может отличаться - но логика должна быть такой же.
Источник