Quantcast
Channel: Клуб API Карт
Viewing all 7380 articles
Browse latest View live

Центрирование карты с использованием YMapsML + кластеры

$
0
0

Добрый день!

Помогите пожалуста разобраться с центрированием карты. В JavaScript практически 0. Набросал такой код:

<script src="//yandex.st/jquery/1.9.1/jquery.min.js"></script>
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>

<script type="text/javascript">
ymaps.ready(init);
var myMap;

function init(){
    myMap = new ymaps.Map("map", {
        center: [50,50],
        zoom: 5
    });

    clusterer = new ymaps.Clusterer();

    var result = [];
    ymaps.geoXml.load('/testing/test-page-02.xml?v='+ (+new Date))
        .then(function (res) {
            res.geoObjects.each(function (geoObject) {
                result.push(geoObject);
            });
            clusterer.add(result);
        }, function (error) {
                console.log(error);
                alert('При загрузке YMapsML-файла произошла ошибка: ' + error);
        });
    myMap.geoObjects.add(clusterer);

    //myMap.setBounds(clusterer.getBounds());

}
</script>
<div id="map" style="width:1200px; height:700px;"></div>

Результат:

Примелись точки [50,50]. При добавлении:

myMap.setBounds(clusterer.getBounds());

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


Событие на маркер в панорамах?

$
0
0

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

Подскажите, как можно вызывать пользовательскую функцию при клике на маркеры в панорамах? В картах такая возможность есть, а в панорамах, как я понял, нет. Если нет, то будет ли возможно в будущем? Сейчас доступны только стандартная подсказка или переход на другую панораму. Я пробовал повешать событие на маркер, нарисованый с помощью canvas

default: {
           image: renderImage("Книги по JavaScript"),
           offset: [0, -10]
 }

как описано здесь https://stackoverflow.com/questions/6215841/create-links-in-html-canvas, но это выглядит жутким велосипедом, да еще и не получается прикрутить к панораме

API Яндекс.Карт версия 2.1.52

$
0
0

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

Исправлено:
- Ошибки в режиме работы с CSP.

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

Построить маршрут минуя область(МКАД).

$
0
0

Как задать маршрут, что бы он прокладывался по третьему транспортному а не через центр москвы...

Координаты по data атрибутам

$
0
0

Здравствуйте! Есть несколько блоков с дата атрибутами:

<a class="main-centers__link" data-coord="[55.119646, 61.625318]">
<a class="main-centers__link" data-coord="[55.244650, 61.375281]">

С помощью js делаю поиск и по дата атрибутам проставляю точки (доплнительно еще по клику переход к точке, добавление другой инфу в нужный блок)

	var Placemark = {};

	ymaps.ready(function() {

		var activeItem = $('.main-   centers__link_active').attr('data-coord');
		activeItem = JSON.parse(activeItem);

		var myMap = new ymaps.Map('map-centers', {
			center: activeItem,
			zoom: 17,
			controls: ['zoomControl']
		}, {
			suppressMapOpenBlock: true,
		});
		console.log('3');
		myMap.behaviors.disable('scrollZoom');

		$('.main-centers .main-centers__link').each(function() {
			var obj = $(this).attr("data-coord");
			obj = JSON.parse(obj);
			console.log(obj);

			    myMap.geoObjects
			      .add(new ymaps.Placemark(obj, {
			      	iconCaption: ''
			      }, {
			      	iconLayout: 'default#imageWithContent',
			      	iconImageHref: '../img/geo-mark.png',
			      	iconImageSize: [29, 43],
			      	iconImageOffset: [-29, -43]
			      }));

		}); //each

		$('.main-centers__link').click(function() {
			var objj = $(this).attr('data-coord');
			objj = JSON.parse(objj);
				// console.log(obj);

				myMap.panTo(objj, {
					flying: 2,
					callback: function() {
						alert('yeap!');
					}
				});

				var addTitle = $(this).find('.title').html();
				var addAddr = $(this).find('.arrd-hide').html();
				var addTels = $(this).find('.tels-hide').html();

				$('.center-addr__title').html(addTitle);
				$('.center-addr__address .addr').html(addAddr);
				$('.center-addr__address .tels__tel').html(addTels);
			});
	});

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

var obj = $(this).attr("data-coord");
    obj = JSON.parse(obj);

Именно на вторую строку. ЧЯДНТ? Функция клика, если убрать сбор точек, работает

Спасибо

Как правильно настроить балун для objectManager?

$
0
0

Столкнулся с проблемой на совершенно ровном месте: не получается настроить балун для ObjectManagerʼa. Вот таким образом пытался:

const objectManager = new ymaps.ObjectManager({
    clusterize: true,
    gridSize: 32,
    clusterDisableClickZoom: true,
    clusterHasBaloon: false,
    clusterOpenBalooOnClick: false,
});
метки нет и балун есть, хотя я писал наоборот

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

const objectManager = new ymaps.ObjectManager({
    clusterize: true,
    gridSize: 32,
});
objectManager.clusters.options.set({
    preset: 'islands#blackClusterIcons',
    hasBaloon: false,
    hintContent: "Куча адресов",
    hideIconOnBaloonOpen: false,
});

Результат нисколько не поменялся — никаких хинтов, метка пропадает, балун появляется. Весь код пишу, внимательно вглядываясь в доки. Что я пропустил?

Как отобразить несколько меток на карте, не отображая вначале карту по-умолчанию?

$
0
0

Нужно отобразить несколько меток на карте, чтобы они полностью поместились на карту.

Что делаю:

1. Карта с координатами по-умолчанию, как в примере, на ней центр Москвы

var myMap = new ymaps.Map("map", {
            center: [55.76, 37.64],
            zoom: 10
        }, {
            searchControlProvider: \'yandex#search\'
        });

2. Создаю метки

var myGeoObject = new ymaps.GeoObject({
           метка с координатами в центре Твери
        });

var myGeoObject2 = new ymaps.GeoObject({
           метка с координатами в центре Костромы
        });

3. Добавляю их в коллекцию, вычисляю размер карты и масштаб, помещаю на карту

gCollection = new ymaps.GeoObjectCollection(null);
    
gCollection.add(myGeoObject);
gCollection.add(myGeoObject2);

myMap.geoObjects.add(gCollection);
myMap.setBounds(gCollection.getBounds(), {checkZoomRange: true});

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

Как сделать так, чтобы сразу отображалась нужная карта?

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

$
0
0

Добрый день у меня есть роут(прокладывает маршрут от точки которую указал пользователь до 2 точки которую он указывает). И мне надо проверить если маршрут проходит через центр Москвы, добавить транзитную точку, если нет оставить как есть. Вопрос, в том как добавить её в роут...

ymaps.route([start,trans, finish])
                        .then(

                            function (router) {

Здесь я могу проверить, проходит или нет... И присвоить значение trans - но, как потом передать этот транс для перестройки маршрута...


Можно ли при расчете расстояния (например доставки) задать разные тарифы для разных дорог?

$
0
0

В одном из предыдущих постов (https://yandex.ru/blog/ymapsapi/1165) вы написали программу, расчитывающую стоимость доставки. Есть ли возможность задать отдельную стоимость некоторым магистралям для расчета стоимости по системе Платон (напимер).

Карты, собранные в конструкторе яндекс карт не отображаются в браузерах Сафари

$
0
0

Добрый день.

Обнаружили проблему с отображением яндекс карт из конструктора в браузерах Сафари. Пробовали на различных компьютерах и на различных версия, результат всегда один - просто пустое место.
В FireFox и Chrome все выводится нормально.

Как изменять оформление активной метки?

$
0
0

На карте добавлено множество меток с помощью 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]
      })
    }
  });
}

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

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

как открыть multiroute balloon

$
0
0

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

Ошибка при попытка пректратиь редактирование ломанной линии

$
0
0

Имеется следующий код:

var poly = new ymaps.Polyline([[56, 37], [57, 37], [57, 38], [55, 38]], {hintContent: "Ломаная линия"}, {});
			map.geoObjects.add(poly);
			map.setBounds(poly.geometry.getBounds());
			poly.editor.startEditing();
			poly.editor.startDrawing();
			poly.editor.events.add('drawingstop', function(e){
				poly.editor.stopEditing();
			});

Создаю линию и разрешаю её редактирование и рисование. Хочу, чтобы после того, как я нажал на вершину и выбрал пункт "Завершить", линия перестала быть доступной для редактирования. Для этого вешаю обработчик на событие 'drawingstop'. В результате получаю такие ошибки в консоле:

И дальше ещё много подобного текста.

Подскажите, пожалуйста, что я делаю не так?

Проблема с установкой балуна метки.

$
0
0

http://jsfiddle.net/z3pjcnLq/1/

На vue написан компонент (не суть важно), в который можно передавать координаты меток и они будут перерисовываться при изменении переданных координат.

Проблема: 1. Загрузили страницу, кликнули на 'icon 4', имитируется загрузка с сервера, текст в balloon висит 'Загрузка...', хотя данные уже подгрузились. Закрываем его, открываем заново, данные на месте.

2.Клик 'icon 5', надписи 'Загрузка...' нет, данные подгрузились и не выводятся до тех пор, пока не закроем/откроем снова этот balloon

3. В кластере аналогично. Например, если после загрузки карты открыть кластер, и кликнуть по нескольким элементам списка, то видно, что текст 'Загрузка...' пишется только тогда, когда мы переключимся на другой элемент списка, а потом снова на этот.

Проблема возникает здесь

setBalloon(obj) {
    if (this.loadingBalloon[obj.id]) return;
    this.loadingBalloon[obj.id] = true;
    if (!obj.properties.balloonContent) {
        obj.properties.balloonContent = 'Загрузка...'; // это ставится
        this.loadInfo(obj.id, (ok, data) => {
            if (ok) {
                obj.properties.balloonContent = data; // здесь содержимое balloon должно обновиться, в памяти оно обновляется
                console.log(obj.properties.balloonContent); // выводится
            } else {
                obj.properties.balloonContent = null;
            }
            this.loadingBalloon[obj.id] = false;
        });
    }
},

В разных примерах также советуют делать obj.properties.set('balloonContent', data), однако такого метода нет (obj.properties.set is not a function).

P.S. Все работает за исключением того, что приходится открыть/закрыть/и снова открыть balloon, чтобы данные отобразились. Если данные были ранее подгружены для этой конкретной метки, то все в порядке.

В редких случаях при самом первом клике по метке после загрузки карты содержимое balloon обновляется автоматически (т.е. видно 'Загрузка...' и затем загруженная информация), но непонятно, что на это влияет (гонок здесь не смог найти).

Стрелки для линий в менеджере объектов

$
0
0

День добрый. Для отображения стрелок на карте воспользовался примером Стрелка на карте. При отображении большого количества линий и стрелок >10000 на большом зуме стрелок становилось очень много и из-за чего карта начинала подвисать. Попробовал воспользоваться ObjectManager`ом для отображения только стрелок в области видимой карты, но к сожалению не нашёл поддержки пользовательских модулей. Вот пример Пример. Существует ли какое-нибудь решение данной проблемы?


strictBounds в SearchControl не работает?

$
0
0

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

Подскажите, пожалуйста, правильно ли я понимаю, что при поиске организаций с использованием searchControl при задании опций strictBounds: true, useMapBounds: true должен уйти запрос к API поиска по организациям с параметром rspn=1 (искать строго в запрошенных границах)?

https://jsfiddle.net/f6s4vrdp/1/ - вот пример из песочницы, добавлены опции как выше, уходит запрос с rspn=0. Ответ для запрошенных координат (9 результатов) не совпадает с количеством меток на карте (0).

https://api-maps.yandex.ru/services/search/v1/?callback=id_149733611298987634388&format=json&lang=ru_RU&token=cf9657cb54eded24ab96b161a96ff73e&rspn=0&results=20&origin=jsapi2SearchControl&snippets=businessrating%2F2.x%2Cmasstransit%2F1.x&ask_direct=1&text=%D0%A8%D0%BE%D0%BA%D0%BE%D0%BB%D0%B0%D0%B4%D0%BD%D0%B8%D1%86%D0%B0&ll=37.597295804584526%2C55.7636625431712&spn=0.0046402215957854764%2C0.0013942952844061551&sign=3512325313

Если исправить на rspn=1, придет пустой массив результатов, just as planned.

https://api-maps.yandex.ru/services/search/v1/?callback=id_149733611298987634388&format=json&lang=ru_RU&token=cf9657cb54eded24ab96b161a96ff73e&rspn=1&results=20&origin=jsapi2SearchControl&snippets=businessrating%2F2.x%2Cmasstransit%2F1.x&ask_direct=1&text=%D0%A8%D0%BE%D0%BA%D0%BE%D0%BB%D0%B0%D0%B4%D0%BD%D0%B8%D1%86%D0%B0&ll=37.597295804584526%2C55.7636625431712&spn=0.0046402215957854764%2C0.0013942952844061551&sign=3512325313

Баг или я не понял принцип работы?

Ajax подгрузка данных объектов в кластер

$
0
0

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

Часть кода на фидле: https://jsfiddle.net/jjt4mLae/

Проблема: при открытии кластера в карусели пусто, хотя если консолью вывести объект, то заполнен параметрами, может там body иной способ имеет заполнения? 

Почему объекты кластера отражаются по-отдельности?

$
0
0

Вопрос..почему точки не объединяются в кластер, а отражаются по-отдельности, когда кластер добавляю в коллекцию геообъектов.?

     var russiaCollection = new ymaps.GeoObjectCollection();

     var kavkazGeoObjects = [];
      kavkazGeoObjects[0] = new ymaps.Placemark([-0.10, -0.79], {
          title: 'Поход к Черному морю через горы Западного Кавказа',
          .............);
      kavkazGeoObjects[1] = new ymaps.Placemark([-0.11, -0.75], {
          title: 'Поход ',
        .............................);
      var kavkazCluster = new ymaps.Clusterer({clusterDisableClickZoom: false});
      kavkazCluster.add(kavkazGeoObjects);
      russiaCollection.add(kavkazCluster);

Удаление балуна при построении мультимаршрута

$
0
0

Добрый день.

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

JavaScript Не работает на карте

$
0
0

Добрый день!

Я написала небольшой  код , но я с ним вожусь уже второй день.

При клике на подробное (как видно на картинке ) class ( .more-address) ничего не происходит, такое впечатление что Javascript не видеть карту.

  $('.more-address').click(function() {      
       alert( 'hello');
       var href = $(this).attr('href');      
       $('.list-items').find('.list-item[id=href]').addClass('is-active');
     });

Я поставила alert, чтоб проверить видеть ли карта click.

Подскажите пожалуйста в чем ошибка.

Viewing all 7380 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>