Клуб API Карт

Порядок оверлеев (полигон)

lexxvlad
20 июля 2011, 07:57

Есть следующая проблема. Получаю данные об объектах на активном участке карты с WikiMapia. Далее наношу их на карту.

Использую для этого: YMaps.Polygon

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

Если способ решения проблемы?

11 комментариев
Подписаться на комментарии к посту

ZIndex, но я бы вообще не рекомендовал бы отрисовывать полигональные данные мапии через полигоны - браузер умреть

1. А как лучше сделать?

2. Zindex как я понимаю указывает порядок. Но вот у меня есть только набор координат точек многоугольника. Как узнать что этот набор полностью закрывается другим набором?

1. Лучше сделать как на мапии и есть - растрировать в картинки, ручками обрабатывать попадание мышки в ненарисованные полигоны.

Либо растрировать на клиенте(канвас)

2. Нужно найти MBR полигона, те квадратик куда его можно вписать. На осонове этих данных можно и подбирать zindex.

в частности можно использовать формулу самой мапии Math.ceil(3000000 / (w+h) )

где w\h размеры в lat\lng * 10000000

Спасибо за ответы Ваши.

Я так понимаю это Ваша статья? Я прочитал, но пока только каша в голове в итоге.

Мой вариант реализации с объектами на картах конечно сильно "тупой" м в лоб. При получении данных с Wiki юзается много трафика. Да и клиенту постоянно данные отправлять, хотя и пытаюсь их жать qzip некомфортно.

Правильно ли я вообще понял суть идеи (главное понять суть, потом будет что поконкретнее спросить :) ).

1. Карта делиться на плитки (квадратики) размером 256 на 256 пикселей. Причем для каждого зума у нас получается свой набор плиток, на той же территории.

2. Мы определяем текущую видимую область: viewpoint. Узнает номера плиток которые нам нужны, что покрыть всю видимую область (если представить всю карту некой сеткой, то у каждой плитки может быть номер).

3. Смотрим, нет ли у нас в кеше браузера таких плиток (картинок png например), если есть показываем их.

4. Тех, что нет, запрашиваем с сервера эти плитки (картинки).

5. На сервере каким то образом для нужной нам области рисуется картинка со всеми объектами.

6. Отдаем клиенту, ставим на карту и показываем.

Так?

http://habrahabr.ru/blogs/google/87894/

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

2. Абсолютно правильно

3. Смотрим не грузили ли мы это уже, в кеш браузера нельзя залесть

4. +1

5. прощай сервер. Что мешает использовать картинки прямо с викимапии + hotspot?

6. +1

ВСЕ(угу какже) вышеперечисленное реализованно в модуле хотспотов(http://api.yandex.ru/maps/jsapi/doc/mod/tasks/how-to-use-twirl-util.xml). Одна беда - полигоны оно так и не умеет. Дописать - совсем даже не долго, но рук сводобных нет :(

Если вам так хочеться - быть может возьметесь - могу показать куда и как модифицировать код для этого.

У самого с тех пор как написал рендер для мапии все гуляют идеи сделать публичный сервис построения "наложения", да только дальше хотелки это почему-то не уходит :(

Вам потребуется только выгрузить с мапии нужный вам кусор карты, переформатировать его в YML и скормить построителю хотспотов( hstiler by twirl, ссылки в описании модуля )

Вариант два - с хотспотами, но без твирла - отрендерить "однубольшуюкартинку" с полигонами мапии, после чего импортировать ее на карту( см инструменты создания пользовательских карт)

спасибо. :) чую катастрофически не хватает знаний далее, пошел просвещаться :) как поумнею в этой области, можно будет обратится? :)

конечно, это место для того и создано

а есть рабочий вариант вот этого?

http://clubs.ya.ru/mapsapi/replies.xml?item_no=7125

Самое лучшее понимание это практика :) Хочу попробовать сделать terrain в картах яндекса. Но в этом топике все равно для меня много сложностей.

Так бы попробовал на рабочем варианте покопаться.

попробуйте поискать в поиске эту ссылку :)

http://clubs.ya.ru/mapsapi/post.xml?item_no=18637

решение что описано в 7125 топике можно подсмотреть на http://www.gdeetotdom.ru/map/#lat=55.74394&lng=37.59924&m=yandex&z=10&l=r360 (синие дороги отрендерены для гугла)

ох, чую попал я в дебри, которые мне незнакомы. Смешались в кучу люди, кони.

Я конечно понимаю, что крайне "тупо" пытаться просить мне все расжевать и положить. Пока все это дело смотрю, оказывается мир картографии выходит далеко за google и yandex.

Кстати, вопрос, по вашей ссылке, на гдеэтотдом, визуальное представление улиц, стоит лого гдеэтотдом.ру. Ваша компания сама делала все снимки? Я в шоке :)

Так вот, я думаю что, для того, чтобы понять что к чему, мне вообще надо понять какие то основы этой картографии, потому что я смотрю на все эти термины, и выпадаю в осадок :( Тайлы,их смещения, и прочее.

Есть ли какой нибудь материал, для базового понимания? В свое время начал изучать php с книжки "php для чаников". В примерах все быстро на практике освоил. Главное понимать базовые вещи. (По образованию программист).

Тут как раз мне этих базовых вещей не хватает, поэтому и не могу принципа понять.

Сорри за "многобуков", вопрос таков: с чего Вы начали знакомство с картами на более глубоком уровне? (не просто используя API от Google или Yandex показать карту и радоваться).

не совсем удачный вопрос так как я отношусь к категории лохматых програмеров-старперов.

А карты начались... 1 курс, ИБРАЭ, openGL рендерер кадастра с выхлопом его в инет.