Блог API Яндекс.Карт

март 2010
Приложение "Подготовка слоя тайлов" вышло из беты
6 марта 2010, 13:55

Приложение "Подготовка слоя тайлов" позволяет автоматизировать процесс подготовки произвольного изображения для показа на веб-странице с помощью API Яндекс.Карт.

Несколько месяцев назад в клубе была анонсирована бета-версия этого приложения. В результате его публичного тестирования мы получили много отзывов, предложений и пожеланий. Мы по возможности постарались их учесть в выпуске новой версии.

Скачать его можно, зайдя на страницу: http://api.yandex.ru/maps/jsapi/doc/dg/concepts/ymapstiler.xml

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

тайлер
Интересные статьи
15 марта 2010, 20:37

Мы следим за тем что пишут в сети про API Яндекс.Карт. Приятно отметить что периодически появляются весьма интересные статьи, которыми мы и спешим с вами поделиться.

Сегодня их две.

Хотим поблагодарить авторов за статьи, которые пригодятся многим пользователям API Яндекс.Карт.

Пишите больше и чаще!

Мы будем рады продолжить публикацию подобных подборок!

Команда API Яндекс.Карт

статьи,статьи пользователей
Построение гибких интерфейсов с помощью макетов
19 марта 2010, 14:29

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

Текстовые шаблоны на основе HTML-кода со специальными переменными позволяют создавать внешнее представление для объектов (верстку). Верстка, получаемая с помощью текстовых шаблонов, являются статичной, поэтому она не способна обрабатывать внешние события, например, щелчки мыши. Добавить поведение шаблону можно с помощью системы макетов, доступной в API Яндекс.Карт.

Макет – это объект, позволяющий создавать динамическое внешнее представление для объектов-оверлеев, способное реагировать на воздействия со стороны пользователя.

Макеты реализуют интерфейс YMaps.ILayout, который состоит из трех методов:

  • onAddToParent() – вызывается при добавлении макета в родительский элемент;
  • onRemoveFromParent() – вызывается при удалении макета из родительского элемента;
  • update() – обновляет макет.

Таким образом для создания собственного макета необходимо написать небольшой класс. Например, он может выглядеть следующим образом:

function ExampleLayout (context, map, owner) {
    var text = owner.name || "";
    this.$nodes = YMaps.jQuery("<div></div>").text(text);
 
    this.onAddToParent = function (parentNode) {
        this.$nodes.appendTo(parentNode);
    };
   
    this.onRemoveFromParent = function () {
        this.$nodes.remove();
        this.$nodes = null;
    };
   
    this.update = function () {}
}

В конструктор макета передается три параметра:

  • context – контекст;
  • map – указатель на карту;
  • owner – cсылка на объект (метку, балун, и пр.), для которого создается макет.

Эти параметры позволяют с легкостью манипулировать как самим объектом, так и его отображением на карте. В классе ExampleLayout используется только параметр owner, который позволяет получить доступ к названию объекта.

Применим созданный макет к метке. Создать макет класса ExampleLayout можно с помощью вспомогательного класса YMaps.LayoutTemplate. Макеты присваиваются объекту через стиль по аналогии с текстовыми шаблонами:

var placemark = new YMaps.Placemark(map.getCenter(), {
    style : {
        balloonContentStyle : {
            template : new YMaps.LayoutTemplate(ExampleLayout)
        }
    }
});
placemark.name = "Имя объекта";
map.addOverlay(placemark);

 

Классы YMaps.LaoutTemplate и YMaps.Template в целом очень похожи, потому что оба реализуют интерфейс YMaps.ITemplate. Отличаются эти классы только входными данными в конструктор: в одном случае это HTML – строка с переменными, а во втором – указатель на класс макета.

Можно реализовать интерфейс YMaps.ITemplate и получить свою собственную «фабрику» макетов. На вход конструктору может приходить представление в каком-то особенном формате (например, объекты определенного класса), а на выходе – макет. Главное, реализовать метод build(), который будет преобразовывать данные в макет.

Также в API есть несколько предопределенных интерфейсов макетов для соответствующих объектов: YMaps.IBalloonLayout для балуна, YMaps.IHintLayout для всплывающей подсказки и YMaps.IPlacemarkLayout для значка метки.

Реализовав интерфейс YMaps.IBalloonLayout, можно полностью изменить внешний вид балуна. Созданный макет будет обрабатывать событие закрытия балуна, а также можно будет установить контент с помощью стандартного метода setBalloonContent().

На странице примеров документации доступен пример макета для балуна.

Методы для установки контента setBalloonContent(), setHintContent() и setIconContent() в качестве аргумента также могут принимать макет. Вы можете отключить автозамену png-изображений на элементы div, которая в API Яндекс.Карт делается автоматически для браузера Internet Explorer 6.x, если создадите свой макет:

function SafeLayout (text) {
    this.onAddToParent = function (parentNode) {
        this.$nodes = YMaps.jQuery(text);
        this.$nodes.appendTo(parentNode);
    };
   
    this.onRemoveFromParent = function () {
        this.$nodes.remove();
        this.$nodes = null;
    };
   
    this.update = function () {}
}
 
var placemark = new YMaps.Placemark(map.getCenter());
placemark.setBalloonContent(new SafeLayout("<img src=\"http://img.yandex.net/i/www/logo.png\"/>"));
map.addOverlay(placemark);

 

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

10 комментариев
статьи,макеты
"О роли карт в прогрессивном сайтостроение. Апрельские тезисы"
19 марта 2010, 16:56

Именно такой доклад мы приглашаем послушать во время Яндекс.Субботника в Минске 15 апреля!

Спешите регистрироваться, количество мест ограничено.

конференции,Я.Субботник
Семинар API Яндекс.Карт в Киеве
25 марта 2010, 13:20

9 апреля 2010 года Яндекс приглашает в гости веб-разработчиков, которым интересно узнать больше про технологию АPI Яндекс.Карт, пообщаться с нашими разработчиками и получить ответы на давно интересующие вопросы.

В программе семинара:

  • рассказ о том, как сделаны Яндекс.Карты и как Карты в API становятся такими, какими вы их видите;
  • обзор технических возможностей API – что нужно для того, чтобы работать с API; обзор инструментов;
  • доклады разработчиков, готовых поделиться опытом применения API в своих проектах;
  • ответы на вопросы, общение с докладчиками.

Мы ждем вас по адресу: г. Киев, ул. Мечникова, 2, конференц-зал БЦ «Парус» (вход со стороны бульв. Леси Украинки).

Начало регистрации в 10:00, начало семинара в 10:30.

И уже по традиции, в комментариях вы можете оставить свои пожелания по темам докладов или задать вопрос, на который хотите получить развёрнутый ответ на семинаре.

Если вы разработчик или интересуетесь API Яндекс.Карт, зарегистрируйтесь, и мы пришлём вам приглашение.

Участие в семинаре бесплатное и по предварительной регистрации. Количество мест ограничено.

семинары
Обновился инструмент "Определение координат"
25 марта 2010, 18:36

Инструмент "Определение координат" дает возможность определять координаты объектов на карте, используя либо поиск по адресу, либо вручную (с помощью указателя).

getlonglat

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

Список изменений:

  • Добавлено отображение текущего масштаба и центра карты;
  • Строка поиска заменена на стандартный элемент управления YMaps.SearchControl;
  • Информационный блок с координатами вынесен в правый верхний угол карты;
  • Добавлена кнопка GeolocatorButton.

 

Мы надеемся, что определять координаты стало удобнее и этот инструмент будет помогать вам в поиске объектов и в дальнейшем.

1 комментарий
инструменты
Наш геокодер теперь полиглот
26 марта 2010, 19:11

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

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

С версии 1.1.8 появилась возможность контролировать язык результатов поиска с помощью параметра prefLang.

Параметр prefLang позволяюет задать предпочтительный язык, на котором будет производиться выдача результатов геокодирования. Код языка указывается в соответствии со стандартом ISO 639.

Этот параметр не влияет на процедуру поиска, а только изменяет описания результатов: описание объекта отдается на предпочитаемом языке, если оно доступно.

Список возможных значений:

  • ru – русский;
  • uk – украинский;
  • be – белорусский.

Если установить параметр prefLang в значение “uk”, то в результате поиска адреса «киев, площадь независимости» будет получен результат – «київ майдан незалежності».

var geocoder = new YMaps.Geocoder("Киев, площадь Независимости", { prefLang : "uk" } );
 
YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
    map.addOverlay(geocoder.get(0));
    map.setBounds(geocoder.get(0).getBounds());
});

Попробовать новый параметр действий и оценить результаты поиска можно с помощью небольшого примера:

http://ymaps.narod2.ru/examples/preflang.html

По запросу на карте будет отображен первый релевантный результат.

геокодирование
Приложение "Подготовка слоя тайлов" версии 1.0.1
29 марта 2010, 20:18

Для скачивания доступна новая версия приложения по подготовке слоя тайлов. Текущая версия - 1.0.1.

Список изменений:

1. Оптимизирована работа с большими изображениями. Теперь если изображение не помещается в память целиком, оно перемещается во временные файлы (файлы GDT*.tmp в каталоге Temp профиля пользвателя).

2. Добавлен индикатор загрузки файлов.

3. Изменен диалог  загрузки файлов. Прошлая версия диалога медленно работала при отрисовки превью для больших изображений.

Мы надеемся, что работа с новой версией нашего приложения станет комфортнее и тайлы будут пилиться быстрее ;)

1 комментарий
тайлер