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

Нужна помощь в выводе правильного содержимого балуна

$
0
0

Всем привет.

Есть вот такая карта

http://jsfiddle.net/igramnet/u6dt7ay8/1/

Задача:

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

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

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


Polyline

$
0
0

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

проблема с зумом при прокрутке мышкой на карте с кластеризацией

$
0
0

https://www.maysun.ru/stores/ сама карта

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

в чем может быть проблема ?

Высота балуна кластера

$
0
0

Всем привет.

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

Нашёл один пост от 2013 года, в котором написано, что такого сделать нельзя. Может сейчас что-то изменилось.

Подскажите, пожалуйста.

Геокодирование

$
0
0

Можно ли в приложении на android получать координаты с гугл мапс, но использовать геокодер яндекса? И как правильно это сделать? 

Задать iconImageHref с классом

$
0
0

API 2.1

Получаю координаты через геокодер и там же создаю новую метку. 

ymaps.geocode('г. Одесса, ул. Малая Арнаутская, 62', {results: 1}).then(function (res) {
  res.geoObjects.options.set('iconLayout', 'default#image');
  res.geoObjects.options.set('hasBalloon', false);
  res.geoObjects.options.set('iconImageHref', 'https://static.weedmaps.com/img/map-loader-21e0b61e61-production.svg');

  myMap.geoObjects.add(res.geoObjects);

});

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

var commonContent = ymaps.templateLayoutFactory.createClass('<div class="icn_content">$[options.iconImageHref]</div>');

ymaps.geocode('г. Одесса, ул. Малая Арнаутская, 62', {results: 1}).then(function (res) {
  res.geoObjects.options.set('iconLayout', commonContent);
  res.geoObjects.options.set('hasBalloon', false);
  res.geoObjects.options.set('iconImageHref', 'https://static.weedmaps.com/img/map-loader-21e0b61e61-production.svg');

  myMap.geoObjects.add(res.geoObjects);
});

и уже ничего не выводит. 

Пробовал и $[options.iconImageHref], и $[properties.iconImageHref]

Вопрос по события в templateLayoutFactory

$
0
0

Подскажите, сделал по примеру событие на наведение на надпись у иконки (вот отсюда пример: https://tech.yandex.ru/maps/doc/jsapi/2.0/ref/reference/templateLayoutFactory-docpage/ )

Вот рабочий пример для апи 2.0:

https://jsfiddle.net/2rnpy52u/ 

Нерабочий пример для апи 2.1:

https://jsfiddle.net/jknLf0w7/1/

Помогите настроить событие на подпись к иконке (изменение цвета при наведении) для апи 2.1, а то что-то не получается разобраться

Установка метки при активной кнопке

$
0
0

Яндекс карты 2.1

Создал свою кнопку на карте "Placemark".

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

Причём, если при активной кнопке, делается клик по карте, на которой уже есть метка, то эта метка перемещается в координаты клика.


Балун на все поле карты

$
0
0

Добрый день! Подскажите, пожалуйста, как сделать чтобы баллун открывался на весь объем видимой области карты?

Ограничить область поиска

$
0
0

Возможно ли ограничить область поиска на карте именно страной, а не прямоугольником через boundedBy? 

Флэш контент для балуна

$
0
0

Задача стоит на карте обозначить места установки камер и по клику на балун показывать флэшь плеер. 

Данные для точек берутся из json API Как в примере. 

$.ajax({
        url: "home/cameras.json"
    }).done(function (data) {
        objectManager.add(data);
    });

Сам json

{
   "type":"FeatureCollection",
   "features":[
      {
         "type":"Feature",
         "id":1,
         "geometry":{
            "type":"Point",
            "coordinates":[
               60.70,
               30.86
            ]
         },
         "properties":{
            "balloonContentHeader":"Улица 10",
            "balloonContentBody":"\u003cdiv id=\"altContent_11\"\u003e\u003c/div\u003e",
            "hintContent":"Молодежная 10"
         }
      },

В balloonContentBody вставляю div с id куда потом флеш плеер наводится.

Собственно, вопрос. А как флешь плеер туда навести? Так как данные созданы динамически яваскриптом то получается недостаточно использовать JQuery.ready. Надо вешать типа Jquery.on('click') по балуну? Или как выйти из положения?

Добавить слой поверх карты с метками

$
0
0

Добрый день
Подскажите пожалуйста как сделать слой поверх карты , как на фото с метками.  Может где то есть пример ?
Спасибо большое за участие 

Получение координат в "center" из переменной

$
0
0

Есть такой код:

var myMap = new ymaps.Map('mapContact', {
	center: [51.185579,71.407693],
	zoom: 17,
	controls: ['zoomControl']
}

Как можно вместо заданных координат (51.185579,71.407693) вставить значение, которое находится в переменной?

Пробовал такой код - не работает:

var activeItem = $('.officeAdr_active').attr('data-coord');
	activeItem - JSON.parse(activeItem);
	var myMap = new ymaps.Map('mapContact', {

	center: activeItem,
	zoom: 17,
	controls: ['zoomControl']
}

И скобки и ковычки и все вместе пробовал добавлять - всеравно не срабатывает :\

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

$
0
0

Как установить размер карты чтобы поместились все метки и размер был как раз по меткам???

Я создаю вначале карту

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

Затем создаю геообекты

myGeoObjects[0] = new ymaps.
  geometry: {
    type: "Point",
    coordinates: [56.050782, 47.096065],
    draggable: true,
  },
  // preset: 'twirl#redIcon',
  properties: {
    clusterCaption: 'title',
    balloonContentBody:
    'content',
   }
  },{
  //img
});

и добавляю на карту 

var myClusterer = new ymaps.Clusterer(
  {
    clusterDisableClickZoom: true
  }
);
myClusterer.add(myGeoObjects);
myMap.geoObjects.add(myClusterer);

как сгенерировать размер карты чтобы он был как раз точно по меткам? 

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

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

Натйти расстояние за мкадом и удалить старый маршрут

$
0
0

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

Вот код:

var map, mapRoute;
    var throu = 0;
    var road = 0;
    var mkadstart = 0;
    var mkadfinish = 0;
    
    function init () {
        var fromView = new ymaps.SuggestView('route-from');
        var toView = new ymaps.SuggestView('route-to');
        
        map = new ymaps.Map('map', {
            center: [55.750625, 37.626],
            zoom: 8,
            controls: ['zoomControl']
        });
        
        var moscowPolygon;
    }
    
    $('#through').click(function(e) {
        throu++;
        
        $('.add-route').before('<div class="line-route"><input type="text" class="route-control added-route" id="route-through'+throu+'"></div>');
        
        onThrou();
    });
    
    function onThrou(map) {
        for(var i = 1; i <= throu; i++) {
            var throuView = new ymaps.SuggestView('route-through'+i);
        }
    }
    
    var routes = [];
    var routeFrom = '';
    var routeTo = '';
    var routeThrou = '';
    
    function onPolygonLoad(json) {
        /*===============================*/
    /*========КАК УДАЛИТЬ СТАРЫЙ МАРШРУТ*/
        /*===============================*/
        if (mapRoute) {
          map.geoObjects.remove(mapRoute);
        }
        
        routeFrom = $('#route-from').val();
        routeTo = $('#route-to').val();
        
        routes.push(routeFrom);
        for(var i = 1; i <= throu; i++) {
            routes.push($('#route-through'+i).val());
        }
        routes.push(routeTo);
        
        moscowPolygon = new ymaps.Polygon(json.coordinates);
        // Если мы не хотим, чтобы контур был виден, зададим соответствующую опцию.
        moscowPolygon.options.set('visible', false);
        // Чтобы корректно осуществлялись геометрические операции
        // над спроецированным многоугольником, его нужно добавить на карту.
        map.geoObjects.add(moscowPolygon);
        
        // Создание маршрута
        ymaps.route(routes).then(
            function(res) {
                // Объединим в выборку все сегменты маршрута.
                var pathsObjects = ymaps.geoQuery(res.getPaths()),
                    edges = [];
                    
                // Переберем все сегменты и разобьем их на отрезки.
                pathsObjects.each(function (path) {
                    var coordinates = path.geometry.getCoordinates();
                    for (var i = 1, l = coordinates.length; i < l; i++) {
                        edges.push({
                            type: 'LineString',
                            coordinates: [coordinates[i], coordinates[i - 1]]
                        });
                    }
                });
                
                var routeObjects = ymaps.geoQuery(edges)
                        .add(res.getWayPoints())
                        .add(res.getViaPoints())
                        .setOptions('strokeWidth', 3)
                        .addToMap(map),
                    // Найдем все объекты, попадающие внутрь МКАД.
                    objectsInMoscow = routeObjects.searchInside(moscowPolygon),
                    // Найдем объекты, пересекающие МКАД.
                    boundaryObjects = routeObjects.searchIntersect(moscowPolygon);
                // Раскрасим в разные цвета объекты внутри, снаружи и пересекающие МКАД.
                boundaryObjects.setOptions({
                    strokeColor: '#06ff00',
                    preset: 'islands#greenIcon'
                });
                objectsInMoscow.setOptions({
                    strokeColor: '#ff0005',
                    preset: 'islands#redIcon'
                });
                // Объекты за пределами МКАД получим исключением полученных выборок из исходной
                routeObjects.remove(objectsInMoscow).remove(boundaryObjects).setOptions({
                    strokeColor: '#0010ff',
                    preset: 'islands#blueIcon'
                });
                
                //длина маршрута
                road = 0;
                road = (Math.round((res.getLength() / 100))) / 10;
                
                //объекты за пределами МКАД
                var objectsOutMoscow = routeObjects.remove(objectsInMoscow);
                
                if(objectsOutMoscow._objects.length == 0) {
                    corse = 0;
                    countPrice();
                }else if(objectsInMoscow._objects.length == 0) {
                    /*===============================*/
    /*========КАК БОЛЕЕ ЭЛЕГАНТНО НАЙТИ РАССТОЯНИЕ*/
                    /*===============================*/
                    fn1();
                    function fn1() {
                        var mkad = objectsOutMoscow.get(1).geometry.getCoordinates()[1];
                        
                        ymaps.route([routeFrom, mkad]).then(
                            function(res) {
                                mkadfinish = (Math.round((res.getLength() / 100))) / 10;
                                fn2();
                            }
                        );
                    }
                    function fn2() {
                        var mkad = objectsOutMoscow.get(1).geometry.getCoordinates()[1];
                        
                        ymaps.route([routeTo, mkad]).then(
                            function(res) {
                                mkadstart = (Math.round((res.getLength() / 100))) / 10;
                                corse = 2;
                                countPrice();
                            }
                        );
                    }
                }else if(objectsOutMoscow._objects.length != 0) {
                    //находим начальную точку полученной выборки
                    var mkad = objectsOutMoscow.get(0).geometry.getCoordinates()[1];
                    
                    ymaps.route([mkad, routeTo]).then(
                        function(res) {
                            mkadfinish = (Math.round((res.getLength() / 100))) / 10;
                            corse = 1;
                            countPrice();
                        }
                    );
                }
                
                
            },
            function(error) {
                alert('Невозможно построить маршрут');
            }
        );
    };
    
    $('.route-button').click(function(e) {
        $.ajax({
            url: 'moscow.json',
            dataType: 'json',
            success: onPolygonLoad
        });
    });
    
    ymaps.ready(init);


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

$
0
0

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

Какое событие при клике на балуне кластера

$
0
0

У меня по карте раскиданы метки. Метки кластеризуются. Когда кластер возможно раскрыть - он раскрывается (приближается карта, кластер распадается на метки или более мелкие кластеры).

При клике на метку я отслеживаю событие

objectManager.objects.events.add('click', function(e){});

Суть вопроса:

Некоторые метки расположены в одной координате, поэтому при клике на кластер они не раскрываются, а открывается балун со списком clusterCaption.

Как отследить событие клика на этот clusterCaption в балуне?

Внезапные тормоза

$
0
0

Скажите, а этой ночью (28-29 апреля) в API карт ничего не менялось?

А то как-то внезапно стал тормзить код, который вчера работал вполне сносно. Конкретно - кластеризатор с ~5к точек. То, что вчера кластеризовалось за 0,5-1 сек, сегодня выполняется за 3-4 сек. Карта задумывается на несколько секунд при каждом зуме, при каждом драге. При попытке профилирования Хром уронил вкладку, сообщив, что не хватило памяти :)

Я конечно не исключаю, что где-то что-то сам накрутил, но пока даже предположений нет, что именно - я сегодня и не менял-то почти ничего. :)

Как построить маршрут, минуя (избегая) заранее расставленные точки на карте?

$
0
0

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

Есть восможность построения маршрута и проложение его через дополнительные точки на карте. А если ли подобная возможность, но чтобы маршрут строился так, чтобы эти точки не затрагивались?

Много меток на одной точке

$
0
0

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

Так сложилось, что на карте получается несколько  меток на одной точке. В каждой свой контент. При нажатии отображается самая верхняя(видимо, позже всех добавлена).

Можно ли сделать, чтобы balloonContent либо переключался, либо выводился одним большим полем и на нем был виден контент всех меток, которые находятся в этой точке?

Viewing all 7380 articles
Browse latest View live