Есть форма, где пользователь вводит адрес. К полю подключены подсказки от стороннего сервиса, этот же сервис отдаёт координаты, а я их сохраняю. Может есть готовые решения для проверки вхождения координат в заранее заданную область? В каком формате хранить область пока не определился, пример в Google Maps. Планируется задать область и сохранить её на сервере, и проверять вхождение при валидации формы, поэтому JavaScript решения не годятся. Посоветуйте, может есть модуль, реализующий подобное? Главное требование -- выполнять код на стороне сервера, ибо карта у клиента в браузере будет не в тему и форма будет перегружена ненужной информацией.
Версия Drupal:
8.x
Вопрос задан 13.03.2017 - 18:50
Ответы
вот отличное решение
function pointInPolygon($point, $polygon){//http://alienryderflex.com/polygon/
$return = false;
foreach($polygon as $k=>$p){
if(!$k) $k_prev = count($polygon)-1;
else $k_prev = $k-1;
if(($p[1]< $point[1] && $polygon[$k_prev][1]>=$point[1] || $polygon[$k_prev][1]< $point[1] && $p[1]>=$point[1]) && ($p[0]<=$point[0] || $polygon[$k_prev][0]<=$point[0])){
if($p[0]+($point[1]-$p[1])/($polygon[$k_prev][1]-$p[1])*($polygon[$k_prev][0]-$p[0])<$point[0]){
$return = !$return;
}
}
}
return $return;
}
источник http://stackoverflow.com/a/34222511
Ответ дан 15.03.2017 - 14:08