Клуб API Карт

Отображение KML с плавающей подсказкой (хинт) и события по клику на полигон

Алексей
19 февраля 2015, 20:06

Добрый день!

Битый час читаю документацию и не могу разобраться с проблемой. То ли документация слишком заумная, то ли мозги ниже средних у меня)

На карту выводится полигон из KML файла http://jsfiddle.net/3xoeLr5q/1/ , не могу к нему добавить плавающую подсказу (хинт) при наведении, и чтобы при клике на область сразу осуществлялся переход по ссылке (например, по той, что сейчас отображается в балуне). Следует учесть, что таких полигонов со странами будет много, поэтому желательно чтобы ссылка бралась из файла KML. Заранее спасибо за помощь!

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

Надо определить макет хинта, иначе как узнать какое поле вы хотите показать в хинте?

http://jsfiddle.net/3xoeLr5q/2/

 

С переходом по ссылке в чем проблема?

Спасибо огромное за ответ! Но до чего же все не логично... Почему мы сначала добавляем res.geoObjects на карту (myMap.geoObjects.add(res.geoObjects);), а потом только начинаем ему устанавливать опции .options.set(...);? Причем по документации довольно трудно вообще выйти на этот .options.set(...); и параметры внутри него, а {{ properties.name }} - про то, что так можно получать значения полей из KML-файла тоже ничего не написано, ну или написано, но найти это в описании... Если бы вы меня ткунли в нужное место в документации, я был бы крайне признателен: может тогда пришло бы понимание, как она устроена в целом))

Ну, да ладно, еще про ссылки:

 function onGeoXmlLoad (res) {
        ...
        res.geoObjects.options.set('hintContentLayout', ymaps.templateLayoutFactory.createClass('{{ properties.name }}'));
        res.geoObjects.events.add('click', function (e) {
             alert('???'); //вместо alert() подразумевается window.location = "???";
        });
        ...
    }

Как в alert() получить {{properties.description}} (допустим, в description лежит нужная ссылка для перехода)? И если не сложно, то как отменить появление балуна при клике?

 

Но до чего же все не логично... Почему мы сначала добавляем res.geoObjects на карту (myMap.geoObjects.add(res.geoObjects);), а потом только начинаем ему устанавливать опции.options.set(...);?

Что именно не логично?

Очередность добавления не имеет значения. Устанавливайте опции перед добавлением, разницы нет.

 

Причем по документации довольно трудно вообще выйти на этот .options.set(...); и параметры внутри него

Все описано в геообъекте, у любой сущности имеющей поля properties и options есть ссылки на соответствующие классы менеджеров данных и опций.

Вы вообще документацию читали или только примеры смотрели?

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject-docpage/