Вы здесь

Как проверить вхождение географических координат в заданную область?

0

Есть форма, где пользователь вводит адрес. К полю подключены подсказки от стороннего сервиса, этот же сервис отдаёт координаты, а я их сохраняю. Может есть готовые решения для проверки вхождения координат в заранее заданную область? В каком формате хранить область пока не определился, пример в Google Maps. Планируется задать область и сохранить её на сервере, и проверять вхождение при валидации формы, поэтому JavaScript решения не годятся. Посоветуйте, может есть модуль, реализующий подобное? Главное требование -- выполнять код на стороне сервера, ибо карта у клиента в браузере будет не в тему и форма будет перегружена ненужной информацией.

Версия Drupal: 
8.x
Вопрос задан 13.03.2017 - 18:50

Ответы

0

вот отличное решение

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