2017-01-04 4 views
0

Я хочу проверить точку в полигоне или не использовать GEOPHP в Drupal. Я создал многоугольник и получил координаты от http://www.birdtheme.org/useful/v3tool.html.Точка в многоугольнике с использованием geoPHP

$userLocation = geoPHP::load("POINT(77.600555 12.965416)","wkt"); 
$storeServingArea=geoPHP::load("POLYGON((77.569656 12.986159, 77.596779 12.993518, 77.622185 12.973780, 77.623215 12.954710, 77.608109 12.945676, 77.577896 12.945341, 77.565880 12.957386, 77.565193 12.976122, 77.568970 12.985824))","wkt"); 
var_dump($storeServingArea->contains($userLocation)); 

Этот код дает результат NULL.

Тогда я попытался обменять значения широты и долготы и проходят следующим образом:

$userLocation = geoPHP::load("POINT(12.965416 77.600555)","wkt"); 
$storeServingArea=geoPHP::load("POLYGON((12.986159 77.569656, 12.993518 77.596779, 12.973780 77.622185, 12.954710 77.623215, 12.945676 77.608109, 12.945341 77.577896, 12.957386 77.565880, 12.976122 77.565193, 12.985824 77.568970))","wkt"); 

var_dump($storeServingArea->contains($userLocation)); 

Это также даст результат как NULL.

Что может быть возможной ошибкой, которую я здесь делаю? как я могу это исправить?

SOLUTION:

Полезная ссылка: Check if Google Map Point is in polygon from PHP

Я установил свой вопрос с помощью следующей ссылке: http://assemblysys.com/php-point-in-polygon-algorithm/

ответ

0

Я раздвоенный geoPHP и добавил Polygon-> pointInPolygon и методы MultiPolygon-> pointInPolygon для этого цель. Посмотрите: https://github.com/sookoll/geoPHP

$point = \geoPHP::load('POINT (x y)','wkt'); 
$polygon = \geoPHP::load('POLYGON ((x y...))','wkt'); 
$point_is_in_polygon = $polygon->pointInPolygon($point); 
Смежные вопросы