Клуб API Карт

Метка не входит на карту при setBounds

shornikovmarat
23 мая, 12:58

Добрый день.

На карте рисуется группа объектов через  geoObjects.add (), зетем массив координат объектов прогоняется через цикл и выясняются координаты верхнего левого и правого нижнего угла. По которым делается setBounds ().

Проблема в том, что метка, например, такая islands#blackStretchyIcon рисуется вверх от точки координат, и не попадает в установленный setBounds ().

Как быть?

7 комментариев
Подписаться на комментарии к посту
Использовать опцию zoomMargin или useMapMargin + Map.margin
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Map-docpage/#setBounds-param-options.useMapMargin
shornikovmarat
24 мая, 09:22
Спасибо за ответ.
Подскажите, если сможете, оно должно при любом наборе данных смещаться или при этом руководствуется набором масштабов карты?
Поясню: сделал демо-пример - всё ок.
С реальным данными - прыгает дискретно.
Вот пример, как опустить вниз на 10 пикселей? Оно сперва вообще не двигается, затем кардинально меняет масштаб...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU"></script>
</head>
<body>
<div id="map" style="width: 400px; height: 400px;"></div>
<script>
var Map;
ymaps.ready(function () {
Map = new ymaps.Map('map', {
center: [56.83834237, 60.60351948],
zoom: 11,
controls: ['zoomControl']
},
{
}
);
Map.margin.addArea({
left: 0,
top: 0,
width: "100%",
height: "10" //<-проблемка с этой цифрой
});
var data = [
[56.89672, 60.594645],
[56.85963, 60.642956]
];
for (rec in data) {
Map.geoObjects.add(new ymaps.Placemark(data[rec],
{
hintContent: rec
}, {
preset: "islands#blackStretchyIcon"
}));
}
Map.setBounds(data, {useMapMargin: true});
});
</script>
</body>
</html>
shornikovmarat,
а что не так? я вижу, что смещается вниз на 10px
shornikovmarat
24 мая, 16:40
dimik,
ну... может я неправильно идеологию понимаю?..
В ссылке - картинка. https://yadi.sk/i/kHtDGJs13JUxbC
Левая часть картинки - height: 0 
в правой - равно 10.
Видно, что маркеры, может и опустились, но сменился и масштаб карты (бегунок подтверждает). У вас не так?

shornikovmarat
25 мая, 09:19
dimik,
 не помогло, да и в доках написано, что по умолчанию true для десктопов.
shornikovmarat,
Ну так надо как раз false выставить
avoidFrationalZoom: false