Клуб API Карт

Это клуб для общения про API Яндекс.Карт. Мы ждём тех, кто хочет задавать вопросы про API, кто готов давать ответы на вопросы других пользователей, а также авторов желающих анонсировать свои проекты, созданные с использованием API Яндекс.Карт. Также в клубе публикуются новости проекта.

Общая информация
Полезное

Прочитайте, прежде чем создать новую тему

Переключение ссылки 2.1
ymapsapi
вчера, 14:58

Мы переключили ссылку api-maps.yandex.ru/2.1/?lang=ru_RU, которая теперь соответствует версии 2.1.55.

Нет комментариев
обновление,новости,API 2.1
Создание пользовательской метки с надписью
Александр Семенов
16 августа, 18:25

Всем доброе время суток. Помогите пожалуйста. Я совсем новичок в изучении yandex maps api, немного тупенький и немного знаю JavaScript, при создании карты со своими метками возникла проблема. 

У меня получается создать метод для добавления метки с пользовательским изображением на карту, но если я хочу добавить туда хотя бы просто надпись (не говоря уже о макете этой надписи), метки пропадают с карты вообще. Они есть в коде, но без изобажения.

Сама картинка для метки выглядит вот так
 

Надпись на ней должна отображаться примерно таким вот образом 

То есть должен быть макет хотя бы с паддингом или relative-позиционированием

Как можно это сделать?

Код метода добавления метки

PlaceMarks = [];
var k = 0;
function AddMark(name, source, coordinates) {
    PlaceMarks.push(new ymaps.Placemark(coordinates, {
        hintContent: name,
        balloonContent: name,
        myID: k
    }, {
        iconLayout: 'default#imageWithContent',
        iconImageHref: source,
        iconContent: 'test',
        iconImageSize: [176, 87],
        iconImageOffset: [-29, -80]
    }));
    k++;
}

5 комментариев
GeoJson поменять координаты
A1-AloneZero
16 августа, 17:08

Здравствуйте! При подгрузке geojson файла координаты улетают в другую область по причине не правильного порядка.

Метод для считывания стандартный из документации:

// Загружаем GeoJSON файл, экспортированный из Конструктора карт.
    $.getJSON('fast_food.geojson')
        .done(function (geoJson) {

            geoJson.features.forEach(function (obj) {
                // Задаём контент балуна.
                obj.properties.balloonContent = obj.properties.name;
                // Задаём пресет для меток с полем iconCaption.
                obj.properties.iconCaption = "iconCaption";
                obj.options = {
                    preset: "islands#pinkDotIcon"
                }
            });
            // Добавляем описание объектов в формате JSON в менеджер объектов.
            objectManager.add(geoJson);
            // Добавляем объекты на карту.
            myMap.geoObjects.add(objectManager);
        });

Можно ли как то используя стандартные средства без разбора строк поменять порядок?

Сделав из 

"geometry": {
        "type": "Point",
        "coordinates": [
          36.2441044,
          54.5150103
        ]
      },

Это:

"geometry": {
        "type": "Point",
        "coordinates": [
          54.5150103,
          36.2441044
        ]
      },

1 комментарий
geojson
Инициализация карты при скролле
Виталий
16 августа, 16:24

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

var mainMap;
  $(window).on('load scroll',function(){ 
   var map = $("#main_map").offset().top;
      if ($(this).scrollTop() >= map) {
          if (!mainMap) {
          var mainMap= new ymaps.Map('main_map', {
            center: [52.09, 23.80],
            zoom: 12,
            controls: []

            }, {
               searchControlProvider: 'yandex#search'
            }); 
          }
      }
   });

В этом случае карта инициализируется множество раз. Как проверить что карта подгружается?

спасибо.

2 комментария
создание карт
Центрирование карты
Андрей Глевчук
16 августа, 11:46

Имеется карта с точками. Нужно сделать так, чтобы при изменении разрешения центр картый изменялся на необходимый. Как это можно реализовать?

1 комментарий
Прошу помощи в нанесении на карту части улицы
igorgunchin
16 августа, 09:32

Я прошу помощи у продвинутых. Суть вопроса: часть улицы Семашко ( Сочи ) не нанесена на карту. Из-за этого люди, в т.ч. и такси не могут по навигатору найти мой дом. На фото это - красная линия. Мой тел +79180699938. Магарыч с меня ( любой, в т.ч. который булькает ). Сам не могу этого сделать.

4 комментария
Как отмечать активный пункт выпадающего списка ListBox
iNixon
15 августа, 19:34

Добрый день.

Реализовал выпадающий список для карты, который фильтрует нужные мне маршруты.

Не могу понять, две вещи: 

  1. Как сделать так, что бы при клике на пункт, снималась галочка с остальных пунктов?
  2. Как первый раз открывать список с заранее отмеченным пунктом (в моем случае последним)?

Заранее спасибо за помощь.

 var ponintsList = new ymaps.control.ListBox({
        data: {
            content: 'Маршруты'
        },
        items: [
            new ymaps.control.ListBoxItem('На машине'),
            new ymaps.control.ListBoxItem('На автобусе'),
            new ymaps.control.ListBoxItem('На электричке'),
            new ymaps.control.ListBoxItem({options: {type: 'separator'}}),
            new ymaps.control.ListBoxItem('Все вместе'),
        ]
    });
ponintsList.get(0).events.add('click', function () {
        myMap.geoObjects.add(multiRoute);
        myMap.geoObjects.remove(multiRouteVDNH);
        myMap.geoObjects.remove(multiRouteTrain);
        ponintsList.collapse(); 
});
ponintsList.get(1).events.add('click', function () {
        myMap.geoObjects.remove(multiRoute);
        myMap.geoObjects.add(multiRouteVDNH);
        myMap.geoObjects.remove(multiRouteTrain);
        ponintsList.collapse();
});
ponintsList.get(2).events.add('click', function () {
        myMap.geoObjects.remove(multiRoute);
        myMap.geoObjects.remove(multiRouteVDNH);
        myMap.geoObjects.add(multiRouteTrain);
        ponintsList.collapse();
});
ponintsList.get(4).events.add('click', function () {
        myMap.geoObjects.add(multiRoute);
        myMap.geoObjects.add(multiRouteVDNH);
        myMap.geoObjects.add(multiRouteTrain);
        ponintsList.collapse();
});

3 комментария
Управление шириной балуна при выборе из кластера
Krem-Ilia
15 августа, 14:48

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

У меня есть вот такой балун:

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

Можно заметить, что он на всю ширину карты. Если карта будет шире, он останется таким же - где-то около 520 пикселей в ширину.

Не подскажете, где можно управлять его шириной?

Я добавляю метки на карту так:

this.objectManager.add({
    type: 'FeatureCollection',
    features: data.deliveries.map((id, i) => {
        return {
            id: i + 1,
            type: 'Feature',
            geometry: {
                type: 'Point',
                coordinates: [data.latitudes[i], data.longitudes[i]]
            },
            properties: {
                balloonContent: `
                    <p>${Math.random()}</p>
                `,
                clusterCaption: `Caption #${i}`
            }
        };
    })
});

Не знаете, где задать ширину этого балуна? Или навесить на контейнер класс. Сейчас внутри контейнера с классом `ymaps-2-1-55-balloon__content` лежит элемент ymaps с шириной 480 пикселей заданной через style.

6 комментариев
балун
setFilter передать массив данных.
Виталий
14 августа, 17:48

Добрый день! Подскажите возможно ли передать в setFilter массив данных

var arr = ['1', '2', '3', '4'];

objectManager.setFilter('properties.type == '"arr"');

спасибо

1 комментарий
setFilter
Не приходят данные прогноза
amdx
14 августа, 16:03

Добрый день!
Моя задача - получить данные прогноза о пробках на несколько часов вперед. В идеале - на день. Карта спозиционирована на центр Москвы, как в примере, выполняю код:

forecastProvider = new ymaps.traffic.provider.Forecast({}, {timeOffset: 1800});
        forecastProvider.setMap(myMap);
        forecastProvider.state.events.add('change', function () {
            if (forecastProvider.state.get('isInited')) {
                var level = forecastProvider.state.get('level');
                displayTrafficData(level);  
            }
        });

1) Событие change отрабатывает несколько раз (в том числе при isInited == true), как я понял, по мере заполнения state. На 5-6 вызов, наконец, заполняется level и все работает как надо.

2) Меняю 1800 на 3600, чтобы получить прогноз на 2 часа вперед - событие приходит, поле isInited == true, но level всегда == null. Почему? На два часа вперед нельзя смотреть?

3) Можно ли как то попроще получить прогноз пробок на несколько часов вперед? Если открыть maps.yandex.ru с включенными пробками, то видно, что выполняется запрос к yandex.ru/maps/api/traffic/getForecast и там возвращается очень удобная структура баллов пробок с разбивкой по часам этого дня.

Нет комментариев
как перемещаться по карте при открытом балуне
askerweb
11 августа, 20:08

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

можно былобы сделать так:

Нет комментариев
балун-панель,карта
Как получить города на маршруте?
freeeeez-seo
11 августа, 17:09

Можно ли получить список городов, через которые следует маршрут? Области? Страны?

1 комментарий
Как изменить Placemark при его нажатии?
GrebeniukLA
11 августа, 10:55
for (var i = 1; i < address.length; i++) { 

var placeMark = new ymaps.Placemark(address[i]); 

placeMark.properties.set({ balloonContent: '' + caption[i] + '' });

placeMark.options.set({preset: 'islands#darkGreenCircleDotIcon'});

placeMark.events.add('click', selectTask(i)); map.geoObjects.add(placeMark); 

}

Вопрос! Как реализовать изменение цвета Placemark при его нажатии?

3 комментария
API Яндекс.Карт версия 2.1.55
ymapsapi
10 августа, 16:43

Мы выпустили новую версию API Яндекс.Карт 2.1.55. Для её подключения используйте адрес: api-maps.yandex.ru/2.1.55/?lang=ru_RU

Мы уже переключили на новую версию api-maps.yandex.ru/2.1-dev/?lang=ru_RU и вскоре опубликуем обновленную документацию. При подключении версии 2.1.54 будет также отдаваться код версии 2.1.55.

Исправлено:
- Не работали метки с макетом pieChart.
- Ошибки при включении панели маршрутов при активном редакторе маршрута на карте.

Команда разработчиков API Яндекс.Карт

Нет комментариев
новости,обновление,API 2.1
Заливка многоугольника изображением
Smolensk.1812-2012
10 августа, 09:46

Предположим, нужно менять геометрию многоугольника, залитого изображением.

Покажу на работающем примере. Кнопки "Выше" и "Шире" изменяют размер прямоугольника. При заливке многоугольника применяется опция fillMethod: 'stretch'.

Как видим, при изменении размера многоугольника картинка искажается и по вертикали и по горизонтали.

Вопрос. Если вместо прямоугольника (как в примере), будет четырехугольник неправильной формы, будет ли к картинке в нем применяться искажение, подобное тому, которое среди трансформирований, имеющихся в PhotoShop, так и называется "Искажение"?

2 комментария
API 2.1
Как сделать выборку меток из выделенной области
mr.shanik
10 августа, 09:29

Есть карта, там выводятся метки по следующему коду:

var myGeoObjects = [];
        $.get('url', function (data) {
            for (var i = 0; i < data.length; i++) {
                //if (data[i].id == id_view) continue;
                var id = data[i].id;
                var geo = data[i].geo.split(',');
                var name = data[i].name;
                var description = data[i].description;
                myGeoObjects[i] = new ymaps.GeoObject({
                    // Тип геометрии - точка.
                    // Описание геометрии.
                    geometry: {
                        type: 'Point',
                        // Координаты точки.
                        coordinates: [geo[0], geo[1]]
                    },
                    properties: {
                        clusterCaption: 'Геообъект №' + id,
                        balloonContent: '<strong>' + name + '</strong><br/>' + description,
                        hintContent: name
                    }
                })

            }
            filtrMap.geoObjects.events.add('mouseenter', function (e) {
                e.get('target').options.set('preset', 'islands#pinkIcon');
            }).add('mouseleave', function (e) {
                e.get('target').options.unset('preset');
            });
            var myClusterer = new ymaps.Clusterer({clusterDisableClickZoom: true});
            myClusterer.add(myGeoObjects);
            filtrMap.geoObjects.add(myClusterer);




Необходимо получить координаты меток, либо id,  которые находятся внутри выделенной области и которая рисуется многоугольником:
 

     var myPolygon = new ymaps.Polygon([], {}, {
                // Курсор в режиме добавления новых вершин.
                editorDrawingCursor: "crosshair",
                // Максимально допустимое количество вершин.
                //editorMaxPoints: 5,
                // Цвет заливки.
                fillColor: '#00FF00',
                // Цвет обводки.
                strokeColor: '#0000FF',
                // Ширина обводки.
                strokeWidth: 2
            });
            
            // Добавляем многоугольник на карту.
            filtrMap.geoObjects.add(myPolygon);

            // В режиме добавления новых вершин меняем цвет обводки многоугольника.
            var stateMonitor = new ymaps.Monitor(myPolygon.editor.state);
            stateMonitor.add("drawing", function (newValue) {
                myPolygon.options.set("strokeColor", newValue ? '#FF0000' : '#0000FF');
            });

            // Включаем режим редактирования с возможностью добавления новых вершин.
            myPolygon.editor.startDrawing();



Есть пример с окружностью но не понятно, как его применить для многоугольника и как получить координаты:
 

ymaps.ready(init);

function init() {
    var myMap = new ymaps.Map("map", {
            center: [55.43, 37.75],
            zoom: 8
        }, {
            searchControlProvider: 'yandex#search'
        }),
        objects = ymaps.geoQuery([
            {
                type: 'Point',
                coordinates: [55.73, 37.75]
            },
            {
                type: 'Point',
                coordinates: [55.10, 37.45]
            },
            {
                type: 'Point',
                coordinates: [55.25, 37.35]
            }
        ]).addToMap(myMap),
        circle = new ymaps.Circle([[55.43, 37.7], 10000], null, { draggable: true });
        
    circle.events.add('drag', function () {
        // Объекты, попадающие в круг, будут становиться красными.
        var objectsInsideCircle = objects.searchInside(circle);
        objectsInsideCircle.setOptions('preset', 'islands#redIcon');
        // Оставшиеся объекты - синими.
        objects.remove(objectsInsideCircle).setOptions('preset', 'islands#blueIcon');
    });
    myMap.geoObjects.add(circle);
}

3 комментария
Как вытащить координаты меток из встроенной карты яндекс?
aushevilez
9 августа, 19:02

Добрый день! На сайте http://monetka.ru/urfo/shops_map     есть встроенная карта с метками, как вытащить координаты этих меток?

1 комментарий
Расчет расхода топлива
bel-alliance
9 августа, 13:31

Здравствуйте. Подскажите как в Расчёт стоимости доставки добавить расчет расхода топлива. надо чтоб отображался не только километраж с ценой  а добавить в код расчет расхода из  10л на 100км. и цену задать один раз через код .  можно без цены просто колличество литров 

1 комментарий
Как выделять границу Территориальное деление России на Яндекс карте
naeim.rezaeian
9 августа, 12:35

Добрый день.

как могу рисовать многоугольник Территориальное деление России по названию или

получеть их координат ?

Центральный федеральный округ

Южный федеральный округ

Северо-Западный федеральный округ

Дальневосточный федеральный округ

Сибирский федеральный округ

Уральский федеральный округ

Приволжский федеральный округ

Северо-Кавказский федеральный округ

1 комментарий
API Яндекс.Карт версия 2.1.54
ymapsapi
8 августа, 17:10

Мы выпустили новую версию API Яндекс.Карт 2.1.54. Для её подключения используйте адрес: api-maps.yandex.ru/2.1.54/?lang=ru_RU
Также мы переключили на новую версию api-maps.yandex.ru/2.1-dev/?lang=ru_RU и вскоре опубликуем обновленную документацию.

Добавлено:
- Новый элемент управления для построения маршрута с панелью выбора начальной и конечной точек маршрута.
- Опции для настройки ширины элемента управления SearchControl.
- Методы 'zoomIn()' и 'zoomOut()' плеера панорам.
- События 'markermouseenter', 'markermouseleave','markerexpand' и 'markercollapse' маркеров панорамы.
- Опция 'loadTileSize' менеджеров объектов RemoteObjectManager и LoadingObjectManager для указания размера загружаемых тайлов.
- Метод 'getPanoramaManager()' для программного доступа к менеджеру панорам.

Изменено:
- Геоссылка теперь поддерживает указание географических координат в качестве тела ссылки.

Исправлено:
- Плеер панорам работал некорректно в браузерах на базе Chromium при встраивании через iframe.
- Иногда не загружалась панорама хорошего качества после изменения зума и центра.
- Промаргивал курсор с точкой «А» при добавлении маршрута на карту.
- Балун альтернативного маршрута не открывался сразу при клике на нитку маршрута.
- Курсор рисования маршрута отображался на карте после включения слоя панорам.
- Не закрывался попап с картой при повторном клике на Геоссылку.
- Проблемы драга карты при размещении карты в iframe.
- Иногда после драга карты приходило событие 'click'.

UPD: при подключении версии 2.1.54 отдается код версии 2.1.55 с момента её релиза.

Команда разработчиков API Яндекс.Карт

Нет комментариев
новости,обновление,API 2.1