2014-02-09 2 views
1

У меня есть таблица слияния, заполненная адресами, а не координатами lat/lng. Google выполнил геокодирование для меня, поэтому у меня нет доступа к геокодированным данным. Эта таблица слияния является одним слоем на моей карте и показывает маркеры для каждого адреса.Поиск маркеров из таблицы слияния в полигоне

Я использую DrawingManager, чтобы позволить пользователю рисовать многоугольник. Как только полигон завершен (т. Е. В обратном вызове многоугольника), я хотел бы иметь возможность определить, какой из маркеров из таблицы слияния находится внутри многоугольника.

Если бы у меня был доступ к координатам, я мог бы сделать это с помощью ST_INTERSECTS, но у меня нет доступа к нему. И поскольку он уже геокодирован Google, я не вижу причины делать дополнительные запросы, используя API геокодирования, чтобы получить координаты.

Итак, есть ли способ определить, какие маркеры из таблицы слияния находятся внутри полигона?

ответ

1

Когда вы имеете в виду с ST_INTERSECTS функцию FusionTablesAPI:

вам не нужны координаты, когда определенный столбец помечен как местоположение столбец и уже привязан к местности Вы можете использовать этот столбец в запросе (даже если у вас были координаты, они не помогут вам больше, когда вы используете API, потому что ST_INTERSECTS ожидает имя столбца, а не геометрию).

Проблема заключается в другом: FusionTablesAPI поддерживает как геометрию для ST_INTERSECTS только CIRCLE и RECTANGLE

Так что ответ: нет

+0

Спасибо за разъяснение на 'ST_INTERSECTS'. В соответствии с [этим ответом] (http://stackoverflow.com/questions/6522484/google-maps-v3-check-if-point-exists-in-polygon) существует способ найти точку в полигоне с использованием луча Кастинг. Поэтому я думаю, что нет возможности использовать API геокодирования напрямую для меня, чтобы делать то, что я хочу, правильно? –

+1

Геокодирование API только геокодирует адреса, не более того. Если вы хотите достичь этого, используя Javascript-API, используйте [google.maps.geometry.poly.containsLocation()] (https://developers.google.com/maps/documentation/javascript/reference?hl=ru&csw=1 #poly) –

+1

Если вы не ожидаете большого количества точечных результатов, вы можете создать прямоугольник, который охватывает ограничивающий прямоугольник многоугольника, использовать его с помощью st_intersects, а затем отфильтровывать ложные срабатывания, используя точку в полигоне на клиенте (как указано в комментарии выше) – jlivni

Смежные вопросы