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

Метки на Яндекс.Карте в виде ссылок

$
0
0

Всем доброго времени суток! В данный момент мне достался в наследство(от предыдущих разработчиков), сайт компании РАТЭК. В разделе филиалов, каждого крупного города есть карта(http://www.rateksib.ru/novosibirsk). Вопроса у меня три:

1) В момент захода на страницу: http://www.rateksib.ru/novosibirsk, если в момент когда карта от Яндекс не загрузилась, начать скролить мышью - карта в общем не покажется, даже после полной загрузки дум дерева. Почему?

2)  Если я нажимаю на развернуть карту во весь экран, обратно свернуть получается с косяком, а и того бывает кнопка возвращения в предыдущее состояние - пропадает.

3) Не могу в итоге сделать так, чтобы метки не относящиеся к городу допустим Новосибирску - были кликабельными, и по ним нажимая человек попадал в тот город. То есть отдавать эти метки нужно на стороне сервера. Как это сделать?

Ребята разработчики, пишу первый пост - хочу сказать спасибо за карты.

Помогите пожалуйста советом.


Работа с регионами - отключить заливку голубым цветом

$
0
0

Использую пример работы с регионами 
https://tech.yandex.ru/maps/jsbox/2.0/regions


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

 lastCollection.each(function (reg) {

                reg.options.set('preset', {
                    strokeWidth: 1,
                    fillColor: "5ff0",   <-------- цвет заливки
                    strokeColor: '99f9'
                });

            });

Как отключить первоначальную заливку голубым цветом или задать свой цвет

Второй вопрос - при проведении мышки над регионов отображается подсказка - название региона . Как сделать чтобы название регионов отображались постоянно сразу после загрузки карты.

Переключение ссылки 2.1

количество городов = количество скриптов?

$
0
0

подскажите, у меня на сайте много страниц с городами и на каждый город мне нужно вывести карту с центрированием на конкретный город. как я понимаю придется создавать на каждый город свой скрипт для центрирования? или может есть возможность задать координаты непосредственно в <div id="#map">, чтобы не генерировать десяток скриптов? 

Получение координат из короткой ссылки

$
0
0

Пишу сервис обработку для 1С. Ввиду угрозы ректальной мотивации со стороны начальства нужно получить координаты из короткой ссылки существуют ли варианты как это можно сделать? Под короткой я подразумеваю ссылки вида: http://maps.yandex.ua/-/CVVMvD6E . Если открыть ее браузером (скрин1), то сбоку есть чудная менюшка с коодрдинатами, думал спарсить, но фигвам в 1С она попадает в таком виде (скрин2) и никакими координатами там не пахнет. Заранее огромное спасибо за помощь.

В браузере
Вид 1С

Прокладка маршрута с исключением заданной области

$
0
0

Привет всем!

Не нашел примера решения подобной задачи, хотя мне она кажется достаточно естественной - прокладка маршрута с исключением заданной области. 

Частные задачи просты - в определенные дни проходят мероприятия в городе, нужно стараться эти областя избегать. Да, ясно что есть понятие пробок, но по факту, перекрытые дороги нарядами не обязательно отражаются как пробки.  Т.е. необходимо динамически их задавать в зависимости от неких условий.

Может кто-то сталкивался с подобной задачей? Как решали? 

P.S. Естественно через API.

Не получается открыть балун при кастомной метке

$
0
0

Накодил вот такую карту с метками , а дальше никак:

http://jsbin.com/xivosed/edit?js,output

1.Нужно чтобы двойной клик не приводил к увеличению карты

2.При наведении на синюю метку курсор менялся на палец, клик по ней приводил к открытию балуна. Курсор на серой метке не меняется, клик по ней ни к чему не приводит

3.Клик на крестик в балуне приводил к его закрытию.

Есть ли какие-нибудь события отслеживания открытия\закрытия балуна? Я бы тогда отказался от jquery ($('body').on('click', '.answersBalloon-close', function(event) {bla-bla)

Объединение функций build

$
0
0

Добрый день
Подскажите пожалуйста как можно  объединить build: function ()  для всех  Placemark,  

чтоб не писать   BalloonContentLayout = ymaps.templateLayoutFactory.createClass для каждой метки.

 myMap = new ymaps.Map("map", {
              center: [55.753994, 37.622093],
              zoom: 10,
              controls: ["smallMapDefaultSet"]
            }),
          BalloonContentLayout = ymaps.templateLayoutFactory.createClass(
          '<div><div class="balloon-content__header">Адрес: г. Москва, ул. Маяковского, д. 22</div><div style="display: inline-block; width: 70%; vertical-align: top;"><a href="#zhukovsky" class="more-address">Подробнее</a></div></div>', {
            build: function () {              
                BalloonContentLayout.superclass.build.call(this);             
                $('.more-address').bind('click', this.onaddressClick);              
            },
            clear: function () {                
                $('.more-address').unbind('click', this.onaddressClick);
                BalloonContentLayout.superclass.clear.call(this);
            },
            onaddressClick: function () {
             var href = $(this).attr('href');
                 $('.list-items').find('.list-item').removeClass('is-active');
                 $('.list-items').find(href).parent('.list-item').addClass('is-active');
            }
         });       
        
        myMap.geoObjects
         .add(new ymaps.Placemark([55.595752817741655,38.12268014974462], {
                hintContent: 'Жуковский'
              }, {
                balloonContentLayout: BalloonContentLayout,               
                balloonPanelMaxMapArea: 0
            }))
        .add(new ymaps.Placemark([55.426712569291176, 37.75617349999999], {
                hintContent: 'ПВЗ-1 Домодедово',
               balloonContentHeader: 'Адрес: ул. Лунная, д. 9',
                balloonContentBody: '<div style = "display: inline-block; width: 29%; vertical-align: top;"> Время работы:</div><div style = "display: inline-block; width: 70%; vertical-align: top;"> Пн: 10:00-20:00</div>'                                                                                       balloonContentFooter: '<div style = "display: inline-block; width: 29%; vertical-align: top;">Как добраться:</div><div style = "display: inline-block; width: 70%; vertical-align: top;"> Ближайшие остановки: ул. Лунная (мкр Дружба 2 конечная), <div style = "display: inline-block; width: 70%; vertical-align: top;"><a href="#domodedovo" class="more-address">Подробнее</a></div>'
            }))
        .add(new ymaps.Placemark([55.95023656879027, 37.297377000000004], {
                hintContent: 'Сходня',
               balloonContentHeader: 'Адрес: г. Москва, ул. Кирова, д. 3 ',
                balloonContentBody: '<div style = "display: inline-block; width: 29%;vertical-align: top;"> Время работы:</div><div style = "display: inline-block; width: 70%; vertical-align: top;"> Пн: 10:00-20:00</div>',
    balloonContentFooter: '<div style = "display: inline-block; width: 70%; vertical-align: top;"><a href="#sxodnya" class="more-address">Подробнее</a></div>'
            })) .


Как сделать ссылку с одной страницы на другую страницу с конкретной меткой yandex map?

$
0
0

Добрый день!
У меня на одной странице расписаны адреса магазинов
На другой странице яндекс карта с метками
Возможно ли сделать ссылку с адреса на конкретную ссылку?

ymaps.ready(function () {
    var myMap = new ymaps.Map('map', {
            center: [47.228332,39.714797],
            zoom: 14
        }, {
            searchControlProvider: 'yandex#search'
        }),

        // Создаём макет содержимого.
        MyIconContentLayout = ymaps.templateLayoutFactory.createClass(
            '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>'
        ),
        myPlacemark1 = new ymaps.Placemark([47.226417,39.722424],{
            hintContent: 'г. Ростов-на-Дону, ул. Чехова 53',
            balloonContent: 'г. Ростов-на-Дону, ул. Чехова 53'
        }, {
            iconLayout: 'default#imageWithContent',
            iconImageHref: 'http://dev01my7.beget.tech/img/loc.png',
            iconImageSize: [30, 42],
            iconImageOffset: [0, 0],
        }),

        myPlacemark2 = new ymaps.Placemark([47.226692,39.717196], {
            hintContent: 'г. Ростов-на-Дону, проспект Ворошиловский 36',
            balloonContent: 'г. Ростов-на-Дону, проспект Ворошиловский 36'}, {
            iconLayout: 'default#imageWithContent',
            iconImageHref: 'http://dev01my7.beget.tech/img/loc.png',
            iconImageSize: [30, 42],
            iconImageOffset: [0, 0]
        });

    myMap.geoObjects
        .add(myPlacemark1)
        .add(myPlacemark2);
});

                       

Необходима помощь с контентом метки

$
0
0

Всех приветствую!)

Что-то немного не понимаю, где накосячил, буду очень признателен, если подскажете)

не выводятся hintContent и balloonContent, скрин кода прикладываю. Буду очень признателен за подсказку)

Не работает кастомизация точек маршрута

$
0
0

Здравствуйте, пытаюсь построить маршрут как  здесь - https://tech.yandex.ru/maps/jsbox/2.1/router, но проблема в том что часть кода где меняются стили у точек маршрута , а также не работает ф-я route.getPaths() (ошибки не выдает. но и в консоль ничего не выводит) , по стилям не работают именно эти строки: 
         // Задаем стиль метки - иконки будут красного цвета, и
        // их изображения будут растягиваться под контент.
        points.options.set('preset', 'islands#redStretchyIcon');
        // Задаем контент меток в начальной и конечной точках.
        points.get(0).properties.set('iconContent', 'Точка отправления');
        points.get(lastPoint).properties.set('iconContent', 'Точка прибытия');

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

Имитация выбора областей на карте

$
0
0

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

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

myRectangle = new ymaps.Rectangle

this._overlayClass is not a constructor

$
0
0

Не могу сделать простейшей вещи с картой — добавить маркеров, выскакивает вот эта ошибка в методе _setupOverlay в файле combine.js:

Uncaught TypeError: this._overlayClass is not a constructor

Самые обычные маркеры, обычная карта, никакой магии в коде и настройке карты, всё предельно элементарно... но нифига не работает.

С чем может быть связана эта ошибка?

Как удалить обработчик событий для конкретного объекта в ObjectManager

$
0
0

Доброго времени суток.

Подскажите пожалуйста с ещё одной проблемой, которой не получается решить.
Задача простая: После события 'dblclick' на ломанную линию, которая находится в 'ObjectManager' удалить все обработчики событий, но только для указанной линии.

myObjectManager = new ymaps.ObjectManager();

myObjectManager.objects.events.add(['dblclick', 'mouseenter', 'mouseleave'], function(e)
{
	var objectId = e.get('objectId');

	switch( e.get('type') )
	{
		case 'dblclick':
		{
			AddID("#routes_road_id", objectId);

			myObjectManager.objects.setObjectOptions(objectId,
			{
				strokeColor: "00000088",
				strokeWidth: 7
			});

            // Удалить обработчик всех событий для objectId.

			break;
		}
		case 'mouseenter':
		{
			myObjectManager.objects.setObjectOptions(objectId,
			{
				strokeColor: "00FF0088",
				strokeWidth: 7
			});

			break;
		}
		case 'mouseleave':
		{
			myObjectManager.objects.setObjectOptions(objectId,
			{
				strokeColor: "FF000088",
				strokeWidth: 7
			});

			break;
		}
	}
});

myMap.geoObjects.add(myObjectManager);

И в догонку ещё уточняющий вопрос: Можно-ли хранить в свойствах гео объекта, который находит в 'ObjectManager' свои поля, например name, и как его получить в обработчике события?

Как вывести объект приходящий в конструктор ymaps.templateLayoutFactory.createClass?

$
0
0

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

В частности:

var clusterContentLayout = ymaps.templateLayoutFactory.createClass([
        '<div class="proposal__item"> \
            <div class="balloon__overlay {{ properties.geoObjects[0].properties.load }}"></div> \
            <div class="MapBalloon_Header"> \
              <div class="MapBalloon_HeaderTitle"> {{ properties.geoObjects[0].properties.title }} </div> \
            </div> \
            <div class="MapBalloon_Body" style="height: auto"> \
              {% for geoObject in properties.geoObjects %} \
              <div class="MapBalloon_Item"> \
                <div class="MapBalloon_ItemImg" style="background-image: url({{  geoObject.properties.photo }})"> \
                  <a href="{{  geoObject.properties.url }}"> \
                    <img src="{{  geoObject.properties.photo }}" alt="{{  geoObject.properties.title }}" /> \
                  </a> \
                </div> \
                <div class="MapBalloon_ItemBody"> \
                  <div class="MapBalloon_ItemBodyType">{{  geoObject.properties.type }}</div> \
                  <div class="MapBalloon_ItemBodyInfo"> \
                    <a href="{{  geoObject.properties.url }}">{% if  geoObject.properties.rooms %} {{  geoObject.properties.rooms }}-к {% endif %}{{  geoObject.properties.type }} {% if  geoObject.properties.area %}{{  geoObject.properties.area }} м<sup>2</sup>{% endif %}{% if  geoObject.properties.area %} {{  geoObject.properties.floors }} эт.{% endif %}</a> \
                  </div> \
                  <div class="MapBalloon_ItemBodyPrice">{{  geoObject.properties.price }}<span class="roub-sign">&nbsp;{{  geoObject.properties.currency }}</span></div> \
                </div> \
              </div> \
              {% endfor %} \
            </div> \
          </div>'
      ].join(''));

Возможно, потому что у меня динамическая загрузка аяксом:

...
var objectState = objectManager.getObjectState(objectId);
              if (!objectState.isClustered) {
                object.properties.load = '';
                objectManager.objects.balloon.open(objectId);
              } else {
                objectManager.clusters.balloon.open(objectState.cluster.id);
              }
...
objectManager.objects.events.add('click', function (e) {
        e.preventDefault();
        var objectId = e.get('objectId');
        setBalloonData(objectId);
      });
      objectManager.clusters.events.add('click', function (e) {
        e.preventDefault();
        var objectId = e.get('objectId');
      });
      //Monitor cluster changes
      var activeObjectMonitor = new ymaps.Monitor(objectManager.clusters.state);
      activeObjectMonitor.add('activeObject', function () {
  			var objectId = activeObjectMonitor.get('activeObject').id;
        setBalloonData(objectId);
  		});


Multiroute Geometry Outline & ActiveRoute

$
0
0

День добрый.

В версии 2.1 при использовании объекта MultiRoute на карту накладываются рассчитанные маршруты. По ним два вопроса.

  1. Рассчитанные маршруты имеют по умолчанию определенные стили. Как их поменять - вопрос понятный, но непонятно какими свойствами можно сделать для произвольной полилинии такие же стили с белым аутлайном, как у дефолтового роута. Никакие доступные опции полилинии не дают эффекта. Это нужно для воссоздания линии маршрута , чтобы визуализировать его без повторного запроса Multiroute.
  2. Что передавать методу setActiveRoute() в аргументы, неясно. Документация говорит о том, что нужно слать объект driving.Route, но никакой результат getRoutes().get(0) и прочие манипуляции не подходят для setActiveRoute(), выводится внутренняя ошибка про отсутствующий метод.

map.margin.Accessor.setArea не меняет отступы

$
0
0

Собственно говоря, сабж. Использую апи (упрощенно) таким образом:

let map = new ymaps.Map('map', {
    center: [55.751574, 37.573856],
    zoom: 10,
    controls: ['zoomControl']
}, {
    searchControlProvider: 'yandex#search'
});
let defaultMargins = {
    search: {
        top: 0,
        left: 0,
        width: "100px",
        height: "50px"
    },
    layers: {
        top: 0,
        left: 0,
        width: "380px",
        height: "100%",
    },
    points: {
        top: 0,
        right: 0,
        width: "380px",
        height: "100%",
    }
};
let margins = {};
let setMargins = function (panelStates) {
    "use strict";
    let newMargins = Object.assign({}, defaultMargins);
    switch (panelStates.layers) {
        case 'open':
            break;
        case 'minimized':
            newMargins.layers.height = "120px";
            break;
        case 'closed':
            newMargins.layers.height = "1%";
            break;
    }
    switch (panelStates.points) {
        case 'open':
            break;
        case 'minimized':
            newMargins.points.height = "120px";
            break;
        case 'closed':
            newMargins.points.height = "1%";
            break;
    }
    Object.keys(defaultMargins).forEach((key) => {
        if (!margins[key]) {
            margins[key] = map.margin.addArea(newMargins[key]);
        } else {
            margins[key] = margins[key].setArea(newMargins[key]);
        }
    });
};
setMargins({
    layers: "open",
    points: "open",
});
let objectManager = new ymaps.ObjectManager({
    clusterize: true,
});
let points = {
    ...
};
let collection = {
    "type": "FeatureCollection",
    "features": points.map((point) => ({
        "type": "Feature",
        "id": point.point_id,
        "geometry": {
            "type": "Point",
            "coordinates": [Number(point.lat), Number(point.lon)]
        },
    })),
};
objectManager.add(collection);
map.geoObjects.add(objectManager);

setMargins({
    layers: "closed",
    points: "open",
});

После исполнения этого кода отступы должны измениться, но этого не происходит, getMargin возвращает одинаковые значения до и после исполнения последнего setMargins. Вопрос знатокам: это я дурак, или лыжи не едут?

searchControl или поиск адреса из внешней формы - нужна помощь

$
0
0

Добрый день, есть созданная карта

<script src="//api-maps.yandex.ru/2.0/?lang=ru-RU&load=package.full" type="text/javascript"></script>

<div id="map" style="width: 100%; height: 70rem;font-size: 1rem;"></div>

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

        function init() {
            myMap = window.map = new ymaps.Map("map", {
                center: [55.76, 37.64],
                zoom: 7            });

            myMap.behaviors.disable('scrollZoom');

            collectionAnomalies = new ymaps.GeoObjectCollection();

            searchControl = new ymaps.control.SearchControl({width: 250});

            myMap.controls
                .add("mapTools")
                .add("zoomControl")

            .add(searchControl);

            add_markers();
            add_anomalies();


            myMap.events.add('contextmenu', function (e) {
                if(!myMap.balloon.isOpen()) {
                    var coords = e.get('coordPosition');
                    myMap.balloon.open(coords, {
                        contentHeader: 'Координаты',
                        contentBody: '<p>' + [
                            coords[0].toPrecision(6),
                            coords[1].toPrecision(6)
                        ].join(', ') + '</p>'
                    });
                } else {
                    myMap.balloon.close();
                }
            });
        }
</script>
{/literal}

Подскажите пожалуйста как вынести форму ввода адреса во внешнюю форму.

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

$
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

Собственно, вопрос в заголовке. Не нашел в документации ничего подобного.  К слову, содержимое балуна кастомизировано при помощи templateLayoutFactory

Viewing all 7380 articles
Browse latest View live


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