Клуб API Карт

Найдено на тему «geoObjects»:
Как изменять оформление активной метки?
Elf W.
9 июня 2017, 12:26

На карте добавлено множество меток с помощью ObjectManager. Нужно сделать так, чтобы при клике на любую метку карта центр карты перемещался на метку (реализовано) и метка увеличивалась в размерах. При клике на другую метку предыдущая должна восстанавливать исходный размер и вся последовательность операций повторяться. Проблема с восстановлением исходного размера метки — не знаю, как реализовать. 

Нашел пост, где в комметарии предлагается вариант решения схожей проблемы. В моем случае такой вариант  не подошел, поскольку я не могу в получаемый json с данными для добавления в objectManager добавлять настройки для меток, да и как потом мне их переключать? Пробовал следующим образом (код обработчика клика на метке, для упрощения примем map и objectManager глобальными переменными):

function onPlacemarkClick(e) {
  const activeObject = e.get('target');
  const id = e.get('objectId');
  const coords = e.get('coords');

// перемещение карты
  map.setCenter(coords, 15, {duration: 200});

// установка параметров текущей метке
  objectManager.objects.setObjectOptions(id, {
    iconImageSize: [50, 50],
    iconImageOffset: [-25, -25]
  });

// попытка сброса параметров всем меткам в коллекции - не работает!!
  objectManager.objects.each(obj => {
    if (obj !== activeObject) {
// ругается на метод set
      obj.options.set({
        iconImageSize: [30, 30]
      })
    }
  });
}

Ругается затейливо, вот фрагмент:

Я подозреваю, что нет такого метода, но что тогда нужно использовать для реализации требуемого функционала? Или вообще сменить подход?

1 комментарий
ObjectManager,geoObjects,customize
Добавление балуна для метки с геокодированием
Удалённый пользователь
14 февраля 2017, 11:40

Всем привет! Помогите пожалуйста, не могу реализовать одну вещь. Имеются два массива: address - массив адресов в текстовом виде, description - массив описаний для балуна. На карту необходимо добавить метки по адресам из address и к меткам добавить балуны из description. Вот что я делаю:

for(i = 0; i < adress.length; i++){
					ymaps.geocode(address[i]).then(
						function(res){
							var tmp = new ymaps.Placemark(res.geoObjects.get(0).geometry.getCoordinates(), {balloonContent: description[i]});
							myMap.geoObjects.add(tmp);
						},
						function(err){
							alert('Ошибка при добавлении точек на карту!');
						}
					);
				}

Метки добавляются на карту, но значение балунов undefined. Думаю это из-за того, что точки добавляются асинхронно из-за промисного метода .then()

Помогите, как можно добавить к меткам балуны с описанием?

geocode,.then(),Placemark,geoObjects
Перенос меток объектов менеджера объектов (ObjectManager) в соседний мир при сдвиге карты
Руслан Стародумов
23 декабря 2016, 12:18

На карте размещены около 6000 объектов с использованием ObjectManager. Метки размещены на территории РФ. Всё отлично работает, за исключением одного момента - часть точек в крайней части России расположились отдельно от остальных (схематично показано на рисунке).

Можно ли сделать так, чтобы точки objectManager'а переносились при сдвиге карты так же, как это работает с Placemark? Ну или подскажите как можно разместить эти точки рядом с остальными.

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

objectManager,точки,сдвиг карты,поведения карты,overlays,geoObjects
Странное поведение адресов на катре
Жуковский Павел
14 сентября 2016, 10:32

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

Вот пример.

https://savgroup.ru/1/index.php

Помогите решить проблему. Спасибо.

7 комментариев
map,geoObjects,yandex
Метки появляются только после драга (сдвига) карты на iphone safari :(
akubenov
23 августа 2016, 08:32

Добрый день! 

Проблема заключается в следующем: метки на карте появляются только после драга, сдвига карты.

Тестируемое устройство / браузер: iphone 5s, safari

Как добавляю  объекты на карту:

1) ajax запрос -> получаем список точек

2) с помощью ObjectManager добавляем объекты на карту

Что было принято для решения проблемы:

1) Перезагружаем див с картой $('.map-container').hide().fadeIn('fast');

2) Немного сдвигаем центр карты после того, как карта инициализировалась, точки были добавлены на карту

Что имеем: точки не появляются не всегда, а в рандомном режиме :( 

Кто сталкивался с такого родом проблемой подскажите плз :)

Это баг api, так как в других браузерах отрабатывает правильно

2 комментария
yandex api,api,safari,баг,ObjectManager,geoObjects,bug,js
myMap.geoObjects как получить index объекта сгенерившего событие?
Mackiavelly67
26 февраля 2016, 18:14
ymaps.ready(init);

function init() {
    var myMap = new ymaps.Map("map", {
            center: [55.73, 37.75],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        });

    // Создаем многоугольник, используя класс GeoObject.
    var myGeoObject = new ymaps.GeoObject({
        // Описываем геометрию геообъекта.
        geometry: {
            // Тип геометрии - "Многоугольник".
            type: "Polygon",
            // Указываем координаты вершин многоугольника.
            coordinates: [
                // Координаты вершин внешнего контура.
                [
                    [55.75, 37.80],
                    [55.80, 37.90],
                    [55.75, 38.00],
                    [55.70, 38.00],
                    [55.70, 37.80]
                ],
                // Координаты вершин внутреннего контура.
                [
                    [55.75, 37.82],
                    [55.75, 37.98],
                    [55.65, 37.90]
                ]
            ],
            // Задаем правило заливки внутренних контуров по алгоритму "nonZero".
            fillRule: "nonZero"
        },
        // Описываем свойства геообъекта.
        properties:{
            // Содержимое балуна.
            balloonContent: "Многоугольник"
        }
    }, {
        // Описываем опции геообъекта.
        // Цвет заливки.
        fillColor: '#00FF00',
        // Цвет обводки.
        strokeColor: '#0000FF',
        // Общая прозрачность (как для заливки, так и для обводки).
        opacity: 0.5,
        // Ширина обводки.
        strokeWidth: 5,
        // Стиль обводки.
        strokeStyle: 'shortdash'
    });

    // Добавляем многоугольник на карту.
    myMap.geoObjects.add(myGeoObject);

    // Создаем многоугольник, используя вспомогательный класс Polygon.
    var myPolygon = new ymaps.Polygon([
        // Указываем координаты вершин многоугольника.
        // Координаты вершин внешнего контура.
        [
            [55.75, 37.50],
            [55.80, 37.60],
            [55.75, 37.70],
            [55.70, 37.70],
            [55.70, 37.50]
        ],
        // Координаты вершин внутреннего контура.
        [
            [55.75, 37.52],
            [55.75, 37.68],
            [55.65, 37.60]
        ]
    ], {
        // Описываем свойства геообъекта.
        // Содержимое балуна.
        hintContent: "Многоугольник"
    }, {
        // Задаем опции геообъекта.
        // Цвет заливки.
        fillColor: '#00FF0088',
        // Ширина обводки.
        strokeWidth: 5
    });

    // Добавляем многоугольник на карту.
    myMap.geoObjects.add(myPolygon);
    
    myMap.geoObjects.events.add(['mouseenter', 'mouseleave'], onObjectEvent);
    
}

function onObjectEvent (e) {
    var objectIndex = ??? // Как получить хотябы индекс объекста в myMap.geoObjects
    console.log(objectIndex);
}

Пример из песочницы повесил ивенты на myMap.geoObjects только потом встал вопрос, а как получить индекс объекта который сгенерировал ивент?

2 комментария
Map,geoObjects,events
Получение всех геообъектов карты geoObjects
Philip / Филипп
17 мая 2013, 02:59

Пробую получить все добавленные вручную геообъекты карты (в моем случае преимущественно полигоны) и разобрать их свойства.

При нажатии на кнопку срабатывает след код:

console.log(myMap.geoObjects); - браузер идет спать

console.log(typeof(myMap.geoObjects)); - браузер идет спать

 

Я как-то не так пытаюсь их получить? Или... я даже не знаю уже.

Это ведь массив геообъектов, как я понял...

Для примера: http://ubuntuone.com/2IPPM9u6RCyttwLOMDU4Tp

Попробуйте нарисовать один-два полигона (клик по карте, чтобы начать) а потом сверху кнопка сохранить (danger!)...

 

2 комментария
geoObjects,API 2.0