Клуб API Карт

март 2017
Фильтр организаций рядом с объектом
Thoth
1 марта 2017, 05:05

Приветствую друзья!

Хочу сделать у себя на сайте фильтр по организациям рядом с заданным объектом. Пример такого фильтра прикрепил к посту. Пока пользуюсь searchControl'ем, но эта выпадашка инуитивно непонятна людям + input на карте хочу убрать.

Объект получаю из БД.

Подскажите, пожалуйста, примером, либо в какую сторону копать

2 комментария
Секция Address в ответе геокодера
sanmon1985
1 марта 2017, 13:15

Хотелось бы узнать подробнее о секции Address, которая появилась в ответе геокодера на том же уровне, что и AddressDetails. Документацию, к сожалению, обнаружить не удалось. Может где-то есть?

2 комментария
geocode,геокодер
День открытых данных в Москве
Maps API
1 марта 2017, 17:56

4 марта в Москве состоится День открытых данных (International Open Data Day). Open data day пройдёт в формате лектория, мастер-классов и хакатона. Работа площадки будет разделена на тематические секции: НКО, Медиа, Город, Этика и Бизнес.

В 14:30 на площадке Бизнес расскажем, как визуализировать данные с помощью Конструктора, и поделимся планами на будущее. 

Участие бесплатное, по предварительной регистрации: http://msk.opendataday.ru

Присоединяйтесь! 

Нет комментариев
мероприятия,конструктор карт,конструктор
Uncaught TypeError: ymaps.Map is not a constructor
Петров Александр
2 марта 2017, 11:11

Почему-то не грузится яндекс карта. 

Ситуация следующая: 

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

Далее, после того, как блоки добавлены в страницу, запускаю карту вот так: 

var all_coord=document.getElementsByClassName('js-coord-house-complex');

          for(var i=0; i<all_coord.length;i++){
            var id=all_coord[i].getAttribute('id');
            var coord=all_coord[i].value.split(',');
            var nameComplex=all_coord[i].getAttribute('name');

            ymaps.ready(init(id));
            var myMap;

            function init(id){
                myMap = new ymaps.Map("map_filter_"+id, {
                    center: [coord[0],coord[1]],
                    zoom: 15,
                    controls: []
                });

                /*код-код-код*/


            }
          }

Ну то есть я обращаюсь к инпутам, специально положенным, беру у них инфу о координатах и id, по id нахожу нужный блок и гружу в него карту. P.S.  у меня несколько блоков, в которые надо яндекс грузануть. 

И если делать все так, как есть, то выдает ошибку, НО! Если весь этот код обернуть в таймер на 2 секунды, то что-то успевает прогрузится и карта грузится. Но иногда все-равно не успевает. 

 

setTimeout(function(){



          var all_coord=document.getElementsByClassName('js-coord-house-complex');

          for(var i=0; i<all_coord.length;i++){
            var id=all_coord[i].getAttribute('id');
            //тут далее код, который выше писал
          }



},2000);

Как это решить, помогите, пожалуйста!

6 комментариев
динамическая загрузка
Печатная версия карты
fil@wbtech.ru
2 марта 2017, 15:22

Добрый день.

Есть карта на странице, эта карта отображается в квадратном контейнере с фиксированными размерами (650рх х 650рх). 
Стоит задача растягивать эту карту на 100% ширины в печатной версии страницы.

При помощи css я растягиваю контейнер в котором находится карта, также я переопределяю фиксированную ширину внутренних контейнеров на 100% (пробовал также 100vw) внутри медиаквериса печати (@media only print). При этом контейнер растягивается, но сама карта остается фикс размера. 
 

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

Внутри карты я вижу canvas, пробовал растягивать его, но при этом нарушаются пропорции и картра растягивается независимо от маркеров.

Подскажите, пожалуйста, как решить эту задачу.

2 комментария
Геоссылка на вашей странице средствами API Карт. Обзор версии 2.1.48.
Maps API
2 марта 2017, 16:07

На этой неделе мы переключили ссылку на самую свежую версию API 2.1.48. Среди важных нововведений — слой Панорам в переключателе типа карты, обновление стиля интерфейсных элементов и, главное, новый способ инсталляции карты на ваш сайт. 

Геоссылка
Геоссылка позволяет показать дополнительную информацию о географическом объекте прямо в тексте страницы. Достаточно обернуть адрес или название организации в специальные теги. 

<span class="ymaps-geolink">Москва, ул. Крылатские холмы, 26</span>

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

Попробовать, как работает Геоссылка, вы можете в нашей песочнице, а все технические аспекты подробно описаны в Руководстве.

Панорамы внутри карты

Слой панорам стал доступен для выбора в переключателе типа подложки. Теперь вы можете открыть плеер Панорам внутри карты аналогично Яндекс.Картам или реализовать собственную логику показа Панорам.

Если по каким-то причинам вы захотите отключить выбор Панорам в переключателе, вам поможет опция panoramasItemMode

Подробнее о возможностях новых версий читайте в ChangeLog.

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

5 комментариев
API 2.1,новости,Геоссылка,Панорамы,примеры
Как связать объекты в сайдбаре с метками на карте? AngularJs
genatttt
2 марта 2017, 19:14

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

Есть компонент выводящий объекты у каждого из которых есть координаты. Объекты выводятся в сайдбаре, а справа карта, на нее выводятся эти же объекты в виде координат. Как правильно связать объекты с картой, чтобы по клику на объект в сайдбаре происходило перемещение на метку на карте? на vanilla я это реализовал, пытаюсь перенести на angular и запутался :(

Спасибо!

1 комментарий
AngularJS
Программный клик по объекту из ObjectManager
i243240
3 марта 2017, 09:04

Перед записью объектов в ObjectManager создаю

myManager.objects.events.add(['click'],function(e){
        var obj = e.get('objectId');
        e.get("target").getById(obj).options.set('strokeStyle', '3 2');
       ... ну и та далее...
      });

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

1 комментарий
Заголовок попапа в кластере
Станислав М.
3 марта 2017, 18:11

Использую версию API 2.1 для создания кластера.        

Проблема в том что в попапе кластера дублируется заголовок из clusterCaption, который по идее должен был быть только для левой части попапа - 

 let placemarkContent = {
                balloonContentBody: '',
                clusterCaption: 'Метка 1',
    };
 let placemark = new ymaps.Placemark([55.831903,37.411961], placemarkContent);
 geoObjects.push(placemark);

Редактирование balloonContentHeader никак не решает проблему. Как можно убрать дублирование заголовка? В версии API 2.0 все было нормально - 

2 комментария
clusterBalloon,кластер
Как импортировать не одну сотню меток на карту
Лев Куминов
4 марта 2017, 01:18

Доброго времени суток. Существует ли сегодня метод импорта меток на карту?

Есть список меток в таком виде: var lnglat152= new YMaps.GeoPoint(26.76303360611201, 54.32073013863826);

Или возможно ли как-то скопировать с другой карты? карта в живом виде тут

1 комментарий
Яндекс-карта в айфрейме
Игорь Н
4 марта 2017, 02:42

Здравствуйте, уважаемые. Помогите разобраться новичку. Мне необходимо, чтобы при нажатии на адрес вылезал вот такой блок с картой. Просто ссылку туда не поместишь, скрипт тоже. Судя по исходнику, там используются какие-то ymaps. Мне необходимо получить вот этот кусок кода. Подскажите, где копать? Документация яндекса ведёт в разные направления, но нужного я не нашёл

1 комментарий
Некорректно срабатывают события балуна на кластерах
Maxim Koshel
4 марта 2017, 10:20

Почему срабатывает событие при открытие балуна при клике на placemark? Ожидается, что сработает событие только на кластере:

clusterer.events.add('balloonopen', function () {
    console.log('Открылся балун');
});

clusterer.events.add('balloonclose', function () {
    console.log('Закрылся балун');
});

Но вот такой код работает как надо:

clusterer.balloon.events.add('open', function () {
    console.log('Открылся балун');
});

clusterer.balloon.events.add('close', function () {
    console.log('Закрылся балун');
});

1 комментарий
clusterBalloon,clusterer
Не отображаются метки на карте
Thoth
4 марта 2017, 14:37

Обращаюсь к https://search-maps.yandex.ru/v1/ аяксом, получаю ответ в виде объекта. Но этот объект никак не получается отобразить на уже существующей карте. Карта сначала отображает один маркер с координатами объекта. При клике по ссылкам (школы, дет сады...) должны отображаться (без обновления карты) маркеры этих объектов. Но почему то они не появляются.

var myMap, myCollection;

ymaps.ready(init);

function init () 
{
   myMap = new ymaps.Map("YMapsID", {
                    center: [42.9543,47.5490], 
                    zoom: 15
   });
            
   myCollection = new ymaps.GeoObjectCollection();
    
   var myPlacemark = new ymaps.Placemark([42.9543,47.5490]);
   //Добавляем метку на карту      
   myMap.geoObjects.add(myPlacemark);
}

$(function(){
  $(document).on('click', '#menum a', function() {
     $('#menum a').removeClass("active");
        
       //     myCollection.removeAll();            

     $.getJSON("https://search-maps.yandex.ru/v1/", {
                text: "школы,средняя школа",
                type: "biz",
                lang: "ru_RU",
                ll: "47.5490,42.9543",
                spn: "",
                rspn: 1,
                apikey: "86749498-3ed5-4892-89e1-e5575c59ccc0",
                results: 50
        }, function(json){
                for (i = 0; i < json.features.length; i++) {
                /*  var myPlacemark = new ymaps.Placemark(json.features[i].geometry.coordinates, {},
                    {
                        preset: 'islands#redHomeIcon' 
                    });
                    myCollection.add(myPlacemark);*/
                    myMap.geoObjects.add(new ymaps.Placemark(json.features[i].geometry.coordinates));
                }
            //     myMap.geoObjects.add(myCollection);
      });
   });
});

В консоли смотрю, объект возвращается нормально, но метки на карте упорно не появляются. Что делаю не так? Уже двое суток мучаюсь( (

Подскажите что где ошибка

12 комментариев
Ошибка инициализации карты в iframe в Firefox
Георгий М.
4 марта 2017, 22:17

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

В firefox при изпользовании карты в iframe (связано с требованием разных версий js библиотек) возникает следующая ошибка при инициализации карт:
В https://api-maps.yandex.ru/2.1.48/combine.js инициализация переменной CopyrightsLayout проходит с ошибкой

TypeError: utilDomStyle.value(...) is null.

Код, вызывающий ошибку:            

utilDomStyle.patch(this._logoLinkElement, {
                printBackground: utilDomStyle.value(this._logoLinkElement, 'backgroundImage', true)
                    .replace(/^\s*url\(['"]?/, '').replace(/['"]?\)$/, '')
            });

Код инициализации карты:
  

  ymaps.ready(function () {
        

            axi_widget.geo.axiMap = new ymaps.Map("axi_widget", {
                center: [55.76, 37.64],
                zoom: 10,
                controls: ["zoomControl"]
            }, {
                searchControlNoCentering: true,
                searchControlResults: 1
            });
axi_widget.geo.axiMap.behaviors.disable('scrollZoom');
    });

Ошибка возникает не всегда, если принудительно обновить страницу (по ctrl shift r) то она отсутствует до следующей загрузки страницы. Также ошибка никогда не возникает в chrome.

К сожалению, эта ошибка появляется не всегда, плюс есть явная зависимость от родительского окна, из которого загружается страница (в пустой странице с вызовом iframe ошибка не воспроизводится). Т.к. в Chrome ошибка отсутствует, то думаю что код родительской страницы не влияет на появление ошибки.

6 комментариев
iframe
Панель администратора для добавление меток
labounch12
6 марта 2017, 15:14

Доброго времени суток! Я посмотрел несколько вариантов реализации обьектов на карте. У нас есть задача - разместить часть филлиалов по стране их будет порядка 1000 + разместить вспомогательные обьекты там их около 3000.

На сколько я понял - все манипуляции с метками будут проходить через добавление кода. 

Есть ли решение с панелью администратора для добавления объектов на карту?

Как пример - человек  реализовал  http://webmap-blog.ru/yandex-maps/spravochnik-na-karte-s-ispolzovaniem-api-yandeks-kart-2-1  подобную задачу

или   https://www.youtube.com/watch?v=qWD9cDd71-4

Неужели панель администратора для установки меток не входит в базовый пакет API Яндекс.Карт 2.1.  ?  Я впервые сталкиваюсь с подобной задачей - размещение обьектов на карту... Вроде есть решения  подобные  instantmaps.ru, но мне не нужно много функционала - только лишь добавление меток + описание филлиала.

1 комментарий
API yandex
Несколько карт на одной странице (API 2.0)
Алекс П.
7 марта 2017, 14:11

Надо выводить более 1 карты на страницу, использован плагин от яндекса (Mediawiki), но выводится 2 карты, а координата одна и таже, хотя на самом деле передается 2 разных координаты, пример вызова:

{{#yandexmap:38.592063,59.9505|описание1 тут|100|200|15|cdzMB}}

{{#yandexmap:35.792063,54.9505|описание2 тут|100|200|15|cdzMB}}  

Резельтат

<div id="YMapsID0" style="width:100%;height:200px">

<div id="YMapsID1" style="width:100%;height:200px">

Т.е. все должно работать... однако карты полностью одинаковые выводятся.


Страница с примером тут http://travel-list.ru/%D0%A2%D0%B5%D1%81%D1%82

Заранее спасибо

2 комментария
Использование Геокодера через js api
Randyydsh
7 марта 2017, 16:16

Добрый день.

Вопрос в следующем: пытался найти но так и не смог считается ли количество запросов к Геокодеру через js api как например тут в лимит запросов к геокодеру?

1 комментарий
Определение распада кластера на отдельные точки
Maxim Koshel
7 марта 2017, 16:55

Можно ли как-то определить, что кластер неделим (в конце концов не распадется на отдельные точки, например, один адрес)?

3 комментария
кластер,кластеризация
Плавающий баннер на карте.
gisberezniki
9 марта 2017, 18:08

Хотим сделать плавающий баннер на карте с привязкой к кординате. Когда координата, к которой привязан баннер выходит за границы видимости на экране, можно ли сделать, чтобы баннер был виден, и в зависимости от передвижения карты баннер тоже смещался ближе к координате, но оставался в зоне видимости экрана постоянно.

1 комментарий
Метка в виде диаграммы...
Mackiavelly67
9 марта 2017, 19:12
myPieChart = new ymaps.Placemark([
            55.847, 37.6
        ], {
            // Данные для построения диаграммы.
            data: [
                {weight: 8, color: '#0E4779'},
                {weight: 6, color: '#1E98FF'},
                {weight: 4, color: '#82CDFF'}
            ],
            iconCaption: "Диаграмма"
        }, {
            // Зададим произвольный макет метки.
            iconLayout: 'default#pieChart',
            // Радиус диаграммы в пикселях.
            iconPieChartRadius: 30,
            // Радиус центральной части макета.
            iconPieChartCoreRadius: 10,
            // Стиль заливки центральной части.
            iconPieChartCoreFillStyle: '#000000',
            // Cтиль линий-разделителей секторов и внешней обводки диаграммы.
            iconPieChartStrokeStyle: '#000000',
            // Ширина линий-разделителей секторов и внешней обводки диаграммы.
            iconPieChartStrokeWidth: 3,
            // Максимальная ширина подписи метки.
            iconPieChartCaptionMaxWidth: 200
        });

Пример из песочницы, задумка 5, все шикарно, но как указать стиль текста в центре, просто если указать цвет границ и цвет фона центра #000000 то ясно дело черный текст плохо видно на черном фоне))

и  в доках ничего не нашел по этому поводу...

5 комментариев
Placemark