Клуб API Карт

Слой активных областей из YMapsML

nightbox
14 апреля 2011, 02:02

Добрый день! Уже три дня изучаю Яндекс Карты :) Вообщем, мне нужно на карту наложить определенное изображение (прямоугольник) с привязкой к Geo-координатам, причем так, чтобы все это пропоционально масштабировалось вплоть до последнего зума.

Сначала использовал программу для нарезки тайлов, но что-то у меня не получилось сгенерировать тайлы  больше 9-го зума. Потом нашел hsTiler, вприципе всё генерируется, но я никак не могу понять как сгенерировать правильный YMapML (XML) для правильного наложения изображения:

 

Имеются 4-координаты привязки изображения:

a - верхний левый угол (width=0,height=0)

b - верхний правый угол (width=max, height=0)

c  - нижний левый угол (width=0, height=max)
d - нижный правый угол (width=max, height=max)

 <?xml version="1.0" encoding="UTF-8"?>
<ymaps xmlns="http://maps.yandex.ru/ymaps/1.x" xmlns:gml="http://www.opengis.net/gml">
    <Representation xmlns="http://maps.yandex.ru/representation/1.x">
     <Style gml:id="image">
            <iconStyle>
             <href>Изображение</href>
             <size x="ширина" y="высота"/>
              <offset x="0" y="0"/>
            </iconStyle>
        </Style>
    </Representation>

    <GeoObjectCollection>
     <style>#image</style>
        <gml:featureMembers>
            <GeoObject>           
                <gml:name>a</gml:name>
                <gml:Point>
                    <gml:pos>lat long</gml:pos>
                </gml:Point>
            </GeoObject>

        </gml:featureMembers>
    </GeoObjectCollection>
</ymaps>

 

Какие координаты нужно укзывать в XML ? Я в XML сейчас указал только координаты верхего левого угла изображения. А как указать остальные координаты привязки, аналогично Tile splitter ? Пример было бы вообще здорово...

Или  hsTiler вообще не для этого и нужно писать свой обработчик ?

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

Т.е. нужен аналог *.kml файла, чтобы hsTiler разбил его на тайлы:


http://www.opengis.net/kml/2.2">

    MapInfo Saved View
   0
   
   Изображение
   
   
    $north
    $south
    $east
    $west
    0
   

вам надо наложить изображение страшного разрешения или просто изображение которое будет тянуться при маштабировании?

hsTiler такую операцию, зараза, не поддерживает. Он вам на всех зумах отрисует одну и туже картинку

имхо лучше разобраться почему нарезка не сработала

изображение которое будет тянуться при маштабировании

тогда можно поступить совсем немного проще:

1.вам надо повторить интерфейс http://api.yandex.ru/maps/jsapi/doc/ref/reference/ioverlay.xml , после чего добавить его на карту как обычный обьект

2.внутрях этого нового обьекта написать что-то типа http://api.yandex.ru/maps/jsapi/doc/dg/tasks/how-to-create-custom-overlay.xml

в последнем примере посмотрите на  function getElement () - там вы можете написать ЛЮБОЙ html код

также посмотрите на  this.onMapUpdate  - там из геопоинта получается координаты где надо наш элемент показать. Если point заменить на leftTop, а после чего еще расчитать координаты bottomRight, да вычесть из них leftTop :P то мы вдруг получим размеры которые надо передать изображению..

Итого пользовательский слой. Внутри  -картинка.

Считаем позицию leftTop, считаем размер, показываем.

профит!

Спасибо, попробую

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

Если можно дайте ссылку на рабочий пример,  а то я js плохо знаю.. Может просто что то не так вызываю

Всё получилось, спасибо большое :)