Клуб API Карт

Свой слой поверх карты

BabaninFV
22 ноября 2013, 11:48

Доброго времени суток, господа!

 

Столкнулся с такой задачей. Нужно на карту наложить свое изображение. Я уже почитал некоторые обсуждение, из них вытекает один вариант - использовать тайлы.

 

Поэтому появилось несколько вопросов:

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

2. Если использовать тайлы, то как использовать Декартову проекцию поверх яндекс карты. (основная карта не должна исчезать)

 

З.Ы. Используется небольшое или большое изображение, поэтому хотелось бы услышать ответы на оба вопроса.

З.Ы.Ы. Интересует как это сделать с использованием API v2

 

Благодарю заранее.

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

Здравствуйте,

1. Уточните, что вы имеете в виду. Вы хотите положить одну большую картинку на всю карту и не бить ее на тайлы?

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

var upperLayer = new ymaps.Layer('www.путь до тайлов/', {

        zIndex: 1000,

       // Создадим декартову проекцию, границы координат будут варьироваться от -1 до 1. Обратите внимание, что при latlong порядок координат будет "перепутан" - [y,x]

        projection: new ymaps.projection.Cartesian([[-1, -1], [1, 1]]),

       // Вероятно понадобится прозрачность тайлов

        tileTransparent: true

    });

map.layers.add(upperLayer);

есть небольшой участок карты на который нужно наложить png картинку с расширенной информацией.

 

Т.е. есть координаты места на карте и на это место нужно положить изображением, размером, ну скажем, 700х700px

В таком случае можете создать оверлей-прямоугольник, залить его картинкой и добавить на карту. У объекта не подтянулись в доке часть методов, но на самом деле он реализует интерфейс IOverlay.  То есть для добавления объекта на карту нужно вызвать у него метод setMap(map) (для удаления с карты setMap(null)).

А можно небольшой пример?

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

 var rectangle = new ymaps.Rectangle(myMap.getBounds(), {}, {

     fillImageHref: 'http://_link_to_the_image_'

 });

 // Добавляем прямоугольник на карту.

 myMap.geoObjects.add(rectangle);