Клуб API Карт

Создать инструменты для рисования многоугольников

Пост в архиве.
maksim-k3
8 января 2011, 00:36

Можно ли сделать так, чтобы можно было рисововать только многоугольники какбы состоящие из квадратов*.

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

Возможно-ли реализовать такой слой? Если кто может помочь с задачей за вознаграждение :) свяжитесь со мной

* пример карты

красный цвет - объект многоугольник

голубой цвет - требуемый многоугольник из квадратов

7 комментариев
Вы хотите, чтобы при рисовании многоугольника закрашивались тайлы, в которые попадает этот многоугольник?

А не могли бы вы рассказать какую задачу вы решаете? Для чего потребовался подобный функционал?
Мне нужно как-то дать возможность выделять области на карте пользователям, чтобы потом по координатам точки можно было вывести всех пользователей в области которых попадает точка.
Долго думал над задачей и пришел к выводу, что так как мне нужно дать выделять области пользователям на весьма ограниченной территории, то ниболее лучшее решение задачи - записывать в базу условные квадраты области (организация базы на подобие системы тегов), определять в каком квадрате находиться точка и искать области по нахождению в них нужных квадратов.
Так получается немного грубые области но подругому я не знаю как реализовать...
Мысль про условные квадраты я не понял.


Но вроде у вас все просто.
Пользователь выделяет область - полигон (квадратный он или не квадратный не важно)
Вы записываете его вершины в базу.
Потом по заданной точке вытаскиваете из базы те полигоны,
в которые она попадает и выводите пользователей,
которым они принадлежат.

Я так понял это оптимизация нагрузки на базу при большом кол-ве пользователей:

Карта бъется на квадраты, квадраты именуются.
Пользователь выделяет некоторое кол-во квадратов( это происходит автоматически по данным из полигона).
Список квадратов и полигон пишется в базу.

При поиске по базе ищутся пользователи, у которых присутствует этот квадрат.
И уже у этой выборки производится проверка принадлежности точки полигону.
Оптимизация врятле.
Пользователь просто не знает как ему лучше реализовать свою задачу.

И да, задачу поиска пересечений точки и полигона можно возложить на базу,
например, применив для этого Spatial Extensions,
Скорость выборки менее 1c на 1 миллион записей, - вполне достойно.
Спасибо, попробую применить Spatial Extensions вроде то что нужно!
 
Но не понимаю как можно sql запросом можно вынуть полигоны, в которые  вхоидт точка? если фигура имеет произвольное количество вершин?


Наверное как то так:

SET @location = 'Point(35.7 57.5)' 
SELECT username, AsText(area) FROM Areas WHERE Intersects(GeomFromText(@location), area);


Если вбить "spatial indexes" в поисковике, то можно всё это узнать