Добавление метки с собственным изображением
API предоставляет возможность задавать меткам собственные изображения.
Чтобы установить нужное изображение, задайте для метки следующие опции:
- iconLayout: "default#image";
- iconImageHref: {URL графического файла}.
Чтобы установить изображение с контентом, задайте для метки следующие опции:
- iconLayout: "default#imageWithContent";
- iconImageHref: {URL графического файла}.
- iconContent: 'содержимое';
Также могут быть установлены опции iconImageSize (ширина и высота изображения в пикселях), iconImageOffset (сдвиг левого верхнего угла иконки относительно точки привязки), iconImageClipRect (координаты отображаемой области исходного изображения в пикселях), iconContentOffset (смещение слоя с содержимым относительно слоя с картинкой) и iconContentLayout (макет содержимого).
index.html
icon_customImage.js
<!DOCTYPE html>
<html>
<head>
<title>Добавление метки с собственным изображением</title>
<meta
http-equiv="Content-Type"
content="text/html; charset=utf-8"
/>
<!--
Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
-->
<script
src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<ваш API-ключ>"
type="text/javascript"
></script>
<script src="icon_customImage.js" type="text/javascript"></script>
<style>
html,
body,
#map {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</html>
ymaps.ready(function () {
var myMap = new ymaps.Map(
"map",
{
center: [55.751574, 37.573856],
zoom: 9,
},
{
searchControlProvider: "yandex#search",
}
),
// Создаём макет содержимого.
MyIconContentLayout = ymaps.templateLayoutFactory.createClass(
'<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>'
),
myPlacemark = new ymaps.Placemark(
myMap.getCenter(),
{
hintContent: "Собственный значок метки",
balloonContent: "Это красивая метка",
},
{
// Опции.
// Необходимо указать данный тип макета.
iconLayout: "default#image",
// Своё изображение иконки метки.
iconImageHref: "icons/pin.svg",
// Размеры метки.
iconImageSize: [48, 48],
// Смещение левого верхнего угла иконки относительно
// её "ножки" (точки привязки).
iconImageOffset: [-5, -44],
}
),
myPlacemarkWithContent = new ymaps.Placemark(
[55.661574, 37.573856],
{
hintContent: "Собственный значок метки с контентом",
balloonContent: "А эта — новогодняя",
iconContent: "12",
},
{
// Опции.
// Необходимо указать данный тип макета.
iconLayout: "default#imageWithContent",
// Своё изображение иконки метки.
iconImageHref: "icons/christmass-head.svg",
// Размеры метки.
iconImageSize: [48, 48],
// Смещение левого верхнего угла иконки относительно
// её "ножки" (точки привязки).
iconImageOffset: [-24, -24],
// Смещение слоя с содержимым относительно слоя с картинкой.
iconContentOffset: [15, 15],
// Макет содержимого.
iconContentLayout: MyIconContentLayout,
}
);
myMap.geoObjects.add(myPlacemark).add(myPlacemarkWithContent);
});