Задать вопрос
@mapleart

Как в google map получить метки для видимой области?

Здравствуйте. Такая проблема, есть база с координатами меток. На карту эти метки подгружаются по средствам ajax запроса, в него я передаю координаты:
{
x1: map.getBounds().getSouthWest().lat(),
y1: map.getBounds().getSouthWest().lng(),
x2: map.getBounds().getNorthEast().lat(),
y2: map.getBounds().getNorthEast().lng()
}


Далее мне нужно написать запрос на выборку, который будет получит метки которы находятся в этой области. Кто может помочь?
  • Вопрос задан
  • 381 просмотр
Подписаться 2 Сложный Комментировать
Решения вопроса 1
@mapleart Автор вопроса
$sql ="SELECT topic_id FROM table
WHERE
(CASE WHEN {$sw_lat} < {$ne_lat} THEN topic_g_lat BETWEEN {$sw_lat} AND {$ne_lat}
ELSE topic_g_lat BETWEEN {$sw_lat} AND 180 OR topic_g_lat BETWEEN -180 AND {$ne_lat}
END)
AND
(CASE WHEN {$sw_lon} < {$ne_lon}
THEN topic_g_lng BETWEEN {$sw_lon} AND {$ne_lon}
ELSE topic_g_lng BETWEEN {$sw_lon} AND 180 OR topic_g_lng BETWEEN -180 AND {$ne_lon}
END)";
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rastishka
@Rastishka
Так в чем проблема заключается?
Условие вхождения точки (x,y) в прямоугольник(x1,y1, x2,y2) проходят в 7м классе.
Ответ написан
Комментировать
@VisualIdeas
Если вас интересует именно MySQL запрос для нахождения меток в области то все просто:
SELECT * FROM `метки` 
WHERE `широта` >= `мин.широта` AND
WHERE `широта` <= `макс.широта` AND
WHERE `долгота` >= `мин.долгота` AND
WHERE `долгота` <= `макс.долгота
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы