Google map или sql, чтобы остановить вставку маркера в 3 милях от другого - PullRequest
0 голосов
/ 29 июля 2011

Я создал страницу php с картой Google v3 и несколькими полями для long и lat.Концепция заключается в том, что пользователь добавляет маркер для своего события, который заполняет поля long и lat для хранения в базе данных M $ -SQL 2008 R2.

Теперь мне нужно, чтобы веб-приложение не позволяло вставлять новый маркер события в пределах 3 миль от любого другого длинного / латинского алфавита в БД (пользователь не видит никаких других маркеров!).В идеале это должно происходить, когда они пытаются установить маркер, но может случиться, когда нажата кнопка отправки и она пытается заполнить БД.

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

1 Ответ

0 голосов
/ 29 июля 2011

У меня нет опыта работы с API Карт Google, но в своем сообщении вы заявляете, что у вас есть таблица базы данных MySQL с длинными и латами.

Прочтите AJAX, чтобы автоматически обработать положение маркера (и проверитьэто) вместо нажатия Отправить.Это должно вытащить вас довольно далеко.

Теперь о длинных и латах.Скажите, что человек бросает это на (x, y).Мы хотим сделать круг вокруг этой точки радиусом 3 мили.Чтобы выбрать все маркеры в пределах (квадрата! Заметьте) 3 мили вокруг этого, мы хотели бы сделать аналогичный запрос:

select stuff from markers where long < 'x + 3' and long > 'x - 3' and lat < 'y + 3' and lat > 'y - 3' с целым числом 3 в милях, конечно.

Теперь мы берем разницу в long и lat между новым маркером (x,y) и каждым из запрашиваемых маркеров и применяем к нему пифагорейский треугольник.

Допустим, один из маркеров базы данных лежит на (db_x,db_y).Мы получаем разницу между этими двумя значениями с помощью (db_x - x, db_y - y) * сноски: не имеет значения, положительный или отрицательный, потому что Пифагор принимает его квадрат)

Теперь возведем в квадрат все это (все в псевдокоде):

h^2 = (db_x - x)^2 + (db_y - y)^2 h = sqrt(h^2)

теперь для всех длин и латов в базе данных (которые мы запрашивали) у нас есть расстояние h до нашего нового маркера.

Затем перейдем к циклу по каждой из этих h переменных, чтобы увидеть, если один < 3, и если это так, вы не можете поместить маркер ...

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...