Клуб API Карт

Найдено на тему «меню»:
Двухуровневое меню для карты и Bootstrap
shopgo51
11 июня 2016, 10:42

В Песочнице есть пример "Вывод списка объектов карты". Скачал, запустил локально. Всё работает. Подставил свои данные. Опять всё работает. Но захотелось в Bootstrap'е повторить. Делаю так:

<body>
<div class="container">
  <div class="row">
<div class="dropdown" style="position:relative">
	<a href="#" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">Группы объектов<span class="caret"></span></a>

</div>

  </div>
</div>
<div id="map"></div>
</body>

Далее вместо используемого в примере menu.appendTo($('body')); делаю menu.appendTo($('.dropdown'));

Карта с объектами отрисовывается. Навигация по меню работает. Но по кликам на втором уровне не показываются балуны, как в примере, а при клике на первом уровне одновременно с показом/скрытием второго уровня не показываются/скрываются метки объектов.

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

	$(".dropdown-menu > li > a.trigger").on("click",function(e){
		var current=$(this).next();
		var grandparent=$(this).parent().parent();
		if($(this).hasClass('left-caret')||$(this).hasClass('right-caret'))
			$(this).toggleClass('right-caret left-caret');
		grandparent.find('.left-caret').not(this).toggleClass('right-caret left-caret');
		grandparent.find(".sub-menu:visible").not(current).hide();
		current.toggle();  // показ/скрытие submenu
//		alert('1 !');
		e.stopPropagation();
	});
	$(".dropdown-menu > li > a:not(.trigger)").on("click",function(e){
		var root=$(this).closest('.dropdown');
		root.find('.left-caret').toggleClass('right-caret left-caret');
//		alert('2 !');
        
        event.preventDefault();
		event.stopPropagation();
	});

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

В какую сторону смотреть ? Где и что нужно подправить ?

1 комментарий
Bootstrap,меню,события
Меню для карты
fi4ru
28 июня 2015, 00:07
Здравствуйте. Пытаюсь по этому примеру Карта яндекс переделать меню, чтобы в меню отображались не группы объектов, а название каждого объекта по отдельности. Не получилось. Кто-нибудь может подсказать, как сделать?
1 комментарий
меню,API 2.1
список объектов на карте и ссылки на них
ya.aligan
18 мая 2015, 18:05

Необходимо отобразить список квартир на карте и рядом html-блок со списком ссылок на эти объекты.
При клике на ссылку карта зумируется и показывается данный объект на карте.
Как это выглядит вот здесь - http://gyazo.com/6fe77b66b82fddd38a31b5a61e1a3773
Собственно буду рад любой информации или примером где можно посмотреть реализацию, так как пока изучаю api карт.

1 комментарий
меню,метка,API 2.1,коллекция
Увеличение при наведении на ссылку
Александр Шевченко
22 марта 2015, 00:30

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

1 комментарий
меню,метка,API 2.1
Изменение стилей метки по наведению курсора на элемент текста
mixa6666
28 февраля 2015, 15:33

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

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

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

В какую сторону "копать"?

Спасибо 

1 комментарий
меню,метка,API 2.1,события
Проблема с центрированием карты при клике на объект в меню
Удалённый пользователь
18 сентября 2014, 13:26

Есть функция обрабатывающая создание меню геообъектов и клики по элементам этого меню:
 

function createSubMenu (item, collection, submenu) {

        // Пункт подменю.

        var submenuItem = $('<div class="menumap item inlineBlock"><div class="arrow absolute"></div><div class="addres">' + item.name + '</div><div class="box-mode-phone"><div class="shop-mode" title="Режим работы">' + item.time + '</div><div class="shop-phone" title="Телефон">' + item.phone + '</div></div></div>'),

        // Создаем метку.

            placemark = new ymaps.Placemark(item.center, { balloonContent: item.name });

 

        // Добавляем метку в коллекцию.

        collection.add(placemark);

        // Добавляем пункт в подменю.

        submenuItem

            .appendTo(submenu)

            // При клике по пункту подменю открываем/закрываем баллун у метки.

            //.find('a')

            .toggle(function () {

                placemark.balloon.open();

            }, function () {

                placemark.balloon.close();

            });

 

    }

 

Часть отвечающую за клики я пытаюсь расширить до центровки карты на данном объекте:

 

 

.toggle(function () {

                placemark.balloon.open();

myMap.setCenter([item.center], 3, {

checkZoomRange: true

});

            }, function () {

                placemark.balloon.close();

            });

 

Но получается что-то немыслимое. Карта ездит туда - сюда, но явно не центруется.

карта:
http://tomato.4your.biz/shops/?city_id=36#map 

2 комментария
меню,центр карты,координаты,события,API 2.1
Центровать метку при переходе на нее через меню
Удалённый пользователь
12 сентября 2014, 17:37

Опять обращаюсь к вам с вопросом по поводу яндекс карты + меню.


Имеется карта - http://tomato.4your.biz/shops/#map и меню меток к ней. Но при клике на один из объектов - он не попадает в центр карты. Карта просто скролится до объекта, и чуть только он в нее попадает - карта замирает. Уверен что пока изучал апи где то об этом видел, но не могу сейчас откопать. Ткните пожлста носом.

1 комментарий
меню,метка,API 2.1
Неверное отображение меток на карте
Удалённый пользователь
12 сентября 2014, 15:04

Всем привет. Пытаюсь сделать меню с группами меток на карте. 
Вот страница на которой тестирую: http://tomato.4your.biz/shops/#map
Определенного успеха вроде добился, но вот незадача - метки отображаются на карте неправильно.

например первая метка в массиве описывается так:

 

name: "Tomato mobile",

            style: "islands#redIcon",

img: "/upload/iblock/01b/01b436dd7e42a1c76b2a54697a312497.png",

            items: [

               {

                    center: [53.239104,56.871768],

                    name: "ул. 10 лет Октября, 53 БЦ Эльгрин",

time: "пн–пт 11:00–21:00<br>сб–вс 10:00–17:00",

phone: "+7 (3412) 77-66-55",

                },

 

            ] 

center: [53.239104,56.871768] - вот ее координаты, нго на карте она появляется где то между Салаватом и Магнитогорском...

Не понимаю в чем причина, просветите пожалста? 

2 комментария
меню,метка,API 2.1,координаты
Доступ к меткам
srgg140201
5 сентября 2014, 12:39

Здравствуйте, нужна помощь.
У меня есть карта с несколькими метками и есть список, где должны дублироваться отмеченные метками объекты. При клике по элементу списка, соответственно, должен эмулироваться клик по метке. Но я никак не найду в API, как к этим меткам получить доступ. Можете подсказать?
http://embed.plnkr.co/uuHBqZLiOeKuC81yhMBN/preview

1 комментарий
меню,метка,API 2.0
Фильтрация объектов на карте по разным критериям
Denis Semagin
5 августа 2014, 22:57

Здравствуйте!
 Нужно организовать выборку объектов на карте по критериям.
Нашел отличный пример http://api.yandex.ru/maps/jsbox/2.0/geoobjects_menu но не удается прикрутить к своему коду.

Уже какой день бьюсь все не получается.

 

 ymaps.ready(init);
function init() {
    var myMap = new ymaps.Map("map", {
        center: [53.19, 50.19],
        zoom: 11,
        behaviors: ["scrollZoom", "drag"]
    });
    myMap.controls.add('zoomControl').add('typeSelector').add('mapTools');
    myGeoObjects = [];
    $.getJSON("search.php", function(json) {
        if (json.status == 'OK') {
            for (i = 0; i < json.markers.length; i++) {
                if (json.markers[i].vozrast == '20') {
                    myPlacemark = new ymaps.Placemark([json.markers[i].lon, json.markers[i].lat], {
                        balloonContentHeader: '<div style="color:#ff0303;font-weight:bold">' + json.markers[i].familiya + ' ' + json.markers[i].imya + ' ' + json.markers[i].otchestvo + '</div>',
                        balloonContentBody: '<div style="font-size:13px;"><div><strong>Адрес:</strong> ' + json.markers[i].fixaddress + '<br>' + '<strong>Возраст:</strong> ' + json.markers[i].vozrast + '<br></div></div>'
                    }, {
                        preset: 'twirl#redIcon'
                    });
                } else {
                    myPlacemark = new ymaps.Placemark([json.markers[i].lon, json.markers[i].lat], {
                        balloonContentHeader: '<div style="color:#ff0303;font-weight:bold">' + json.markers[i].familiya + ' ' + json.markers[i].imya + ' ' + json.markers[i].otchestvo + '</div>',
                        balloonContentBody: '<div style="font-size:13px;"><div><strong>Адрес:</strong> ' + json.markers[i].fixaddress + '<br>' + '<strong>Возраст:</strong> ' + json.markers[i].vozrast + '<br></div></div>'
                    });
                }
                myGeoObjects.push(myPlacemark);
            }
            clusterer = new PieChartClusterer();
            // Добавляем метки в кластеризатор.
            clusterer.add(myGeoObjects);
            // Добавляем кластеризатор на карту.
            myMap.geoObjects.add(clusterer);
        } else {
            alert('Произошла ошибка!');
        }
    })
}

 

3 комментария
меню,кластеризатор,API 2.0
Центрирование карты при клике на ссылку
Дмитрий Калугин
20 июля 2014, 10:59

Добрый день.

Подскажите пожалуйста как реализовать подобоное http://api.yandex.ru/maps/doc/jsapi/1.x/examples/mappanto.html на api 2.x

14 комментариев
меню,координаты,API 2.0
Кластеризовать коллекцию
bit.rix
4 июня 2014, 19:12

День добрый.

Прошу помощи.

Задача:

1. вывести на карту ряд меток

2. добавить возможность их группировать по определенным признакам

3. добавить возможность скрывать/показывать группы

4. группировать при масштабировании, т.е. кластеризировать.

 

Первые 3 пункта мне удалось "победить":

с кластерами совсем беда.

 

как можно кластеризировать эти данные и так чтобы не потерять возможность фильтрации?

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

1 комментарий
меню,кластеризатор,API 2.0,коллекции
как можно нарисовать панельку с текстом поверх карты
alexandru.capustean
28 мая 2014, 16:00

Можно ли нарисовать панельку поверх карты без никаких гео координат, внутри которой будут 2 ссылки и при нажатие на одну из них нарисовать ещё одну панельку, как в рисунке 

заранее спасибо !

4 комментария
меню,API 2.1,html,CSS
Определить метки в видимой части карты
caxap2007
15 мая 2014, 04:56

Доброго времени! Прошу помощи, сам не могу сообразить. В документации есть два примера:

 

var geoObjects = clusterer.getGeoObjects(),
    shownObjectsCounter = 0;
for (var i = 0, l = geoObjects.length; i < l; i++) {
    if (clusterer.getObjectState(geoObjects[i]).isShown) {
        shownObjectsCounter++;
    }
}
alert('Сейчас на карте показаны ' + shownObjectsCounter + ' меток из ' + geoObjects.length + '.');

 

и

 

  myMap.events.add('boundschange', function () {


});

 

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

 

 myMap.events.add('boundschange', function () {
     var geoObjects = clusterer.getGeoObjects(),
    shownObjectsCounter = 0;
for (var i = 0, l = geoObjects.getLength(); i < l; i++) {
    if (clusterer.getObjectState(geoObjects[i]).isShown) {
        shownObjectsCounter++;
       alert(geoObjects[i].properties.get("placeid"));
    }
}
alert('Сейчас на карте показаны ' + shownObjectsCounter + ' меток из ' + geoObjects.getLength() + '.');
});

 

8 комментариев
меню,кластеризатор,API 2.1,геокодирование
Изменение значения зума при клике на точку. Имитация клика на точку. 2.1
gother72
10 мая 2014, 17:00

прошу помощи в решении вопроса. Буду очень благодарен. 

Есть карта, с прописанными точками.

1. Нужно чтобы при клике на точку карта не только центровалась на ней, но и меняла значение zoom до нужного (не того, которое указано в значении центра карты). Как это можно реализовать?

2. Понимаю, что не очень в тему, но как можно реализовать имитацию нажатия на точку на карте через кнопки, расположенные на этой-же странице, но за пределами карты? В смысле, при нажатии на кнопку (например ссылку) карта это будет воспринимать как нажатие на точку на карте и центровать карту на этой самой точке.

 

Точки на карте прописаны таким вот образом:

myGeoObject = new ymaps.GeoObject({
geometry: {
type: "Point",
},
properties: {
hintContent: 'CompsHelp',


}
});

myMap.geoObjects
.add(myGeoObject)
.add(new ymaps.Placemark([50.488337, 30.498784], {
balloonContentHeader: " Контент ",
balloonContentBody: " Контент ",
balloonContentFooter: " Контент ",
}, {
preset: 'islands#dotIcon',
iconColor: '#3b5998'

}))

myMap.geoObjects.add(myPlacemark);
}

 

 

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

 

12 комментариев
масштаб,метка,API 2.1,меню
Ссылка на открытие балуна метки!
Владимир О.
30 января 2014, 14:10

Как сделать так что бы балуны меток открывались на html ссылки? Допустим написал я статью, там вставил ссылку и при нажатии на неё у меня открылся балун на карте? Как это реализовать, что нужно добавить в этот код и как должна выглядить ссылка на балун? Прошу помощи, Спасибо!!! 

Вот как пример скрипт карты:

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

<script type="text/javascript">

ymaps.ready(init);

function init () {

    var myMap = new ymaps.Map("map", {

            center: [48.568388,39.309111],

            zoom: 13

        });

myMap.behaviors.enable('scrollZoom');

myMap.controls

        // Кнопка изменения масштаба.

        .add('smallZoomControl');

myPlacemark2 = new ymaps.Placemark([48.568388,39.309111], {

            // Свойства.

iconContent: '1',

balloonContent: 'Балун',

            hintContent: 'Собственный значок метки'

        }, {

            // Опции.

            // Своё изображение иконки метки.

            iconImageHref: 'images/phone.png',

            // Размеры метки.

            iconImageSize: [30, 30],

            // Смещение левого верхнего угла иконки относительно

            // её "ножки" (точки привязки).

            iconImageOffset: [-15, -25]

        });

myPlacemark3 = new ymaps.Placemark([48.566895,39.316765], {

            // Свойства.

iconContent: '1',

balloonContent: 'Балун',

            hintContent: 'Собственный значок метки'

        }, {

            // Опции.

            // Своё изображение иконки метки.

            iconImageHref: 'images/phone.png',

            // Размеры метки.

            iconImageSize: [30, 30],

            // Смещение левого верхнего угла иконки относительно

            // её "ножки" (точки привязки).

            iconImageOffset: [-15, -25]

        });

    // Добавляем все метки на карту.

    myMap.geoObjects

.add(myPlacemark3)

        .add(myPlacemark2);

}

 

Отображение карты:

<div id="map" style="width:700px; height:300px"></div>

 

вот как выглядит карта сейчас( на ней две метки):

3 комментария
меню,метка,API 2.0,балун
Как открыть балун нужного элемента по внешней ссылке?
Удалённый пользователь
28 января 2014, 17:41

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

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

Данные на карте подгружаются через xml файл. 

<script type="text/javascript">
ymaps.ready(init);
window.placemarks = [];
function init() {
    var myMap = new ymaps.Map("map", {
        center: [ <? IF($tcentr_karty != '') echo $tcentr_karty;
            else echo '58.062798,53.965327'; ?>
        ],
        zoom: 4,
        behaviors: ["default", "scrollZoom"]
    });
    myMap.controls.add('zoomControl');
    ymaps.geoXml.load("/test/primer/map.xml")
        .then(function (res) {
            myMap.geoObjects.add(res.geoObjects);
        }, function (error) {
            alert("При загрузке YMapsML-файла произошла ошибка: " + error);
        });
}
</script>

 

1 комментарий
меню,API 2.0,коллекции,балун
При нажатии на ссылку показать метку на карте с плавным перемещением
Фалслалс
23 января 2014, 19:48

Помогите с кодом может пример есть

Есть ссылки и карты

Как при нажатии на ссылку показать метку на карте с плавным перемещением по карте к метки, если известным координаты? 

2 комментария
меню,метка,API 2.0,коллекции
подскажите как правильно Как правильно сделать цикл
bratyxa-servis
28 декабря 2013, 16:46

Привет всем. Наткнулся на хороший пример вот он http://dimik.github.io/ymaps/examples/group-menu/menu03.html захотел себе его реализовать, но проблема в том что я хочу вывести данные из бд, так как я не привык работать с js для меня трудно передать данные из php в js нашел пример где есть вывод с бд  вот этот пример http://webmap-blog.ru/yandex-maps/sozdanie-karty-na-sajte-s-adresami-magazinov-s-ispolzovaniem-api-yandeks-kart-versii-2-x-prodolzhenie

Так вот я решил объединить эти два примера  в идеале должно получиться список городов  по которым щелкаешь и появляется нужный регион с метками, которые будут фильтроваться с помощью меню.

мне надо сделать цикл, что бы в нем была нужная мне информация вот сейчас эта информация есть в первом примере в таком виде

 

 group1 = new ymaps.GeoObjectArray({

                properties: {

                    id: 'group-1',

                    name: 'Известные памятники'

                }

            }, {

                preset: 'twirl#redIcon'

            }),

            group2 = new ymaps.GeoObjectArray({

                properties: {

                    id: 'group-2',

                    name: 'Покушайки'

                }

            }, {

                preset: 'twirl#greenIcon'

            }),

            group3 = new ymaps.GeoObjectArray({

                properties: {

                    id: 'group-3',

                    name: 'Оригинальные музейчики'

                }

            }, {

                preset: 'twirl#orangeIcon'

            }),

            group4 = new ymaps.GeoObjectArray({

                properties: {

                    id: 'group-4',

                    name: 'Красивости'

                }

            });

 

Здесь надо создать четыре группы проблема в том, что я не знаю, сколько будет у меня групп в меню, поэтому будем делать все на автомате будем считать, что в php я сделал массив категорий $json = json_encode($cat);  $cat массив вида  id категории=>имя категории. Как я уже говорил, что я не знаю количества категорий и в цикле надо эти категории объявить как в коде который я представил выше.

вот второй код 

 

 // Наполняем группы геообъектами.

            group1

                .add(new ymaps.Placemark([50.426472, 30.563022], { id: 'group-1-1', balloonContent: 'Монумент &quot;Родина-Мать&quot;' }))

                .add(new ymaps.Placemark([50.45351, 30.516489], { id: 'group-1-2', balloonContent: 'Памятник &quot;Богдану Хмельницкому&quot;' }))

                .add(new ymaps.Placemark([50.454433, 30.529874], { id: 'group-1-3', balloonContent: 'Арка Дружбы народов' }));

 

            group2

                .add(new ymaps.Placemark([50.50955, 30.60791], { id: 'group-2-1', balloonContent: 'Ресторан &quot;Калинка-Малинка&quot;' }))

                .add(new ymaps.Placemark([50.429083, 30.521708], { id: 'group-2-2', balloonContent: 'Бар &quot;Сало-бар&quot;' }))

                .add(new ymaps.Placemark([50.450843, 30.498271], { id: 'group-2-3', balloonContent: 'Абсент-бар &quot;Палата №6&quot;' }))

                .add(new ymaps.Placemark([50.454834, 30.516498], { id: 'group-2-4', balloonContent: 'Ресторан &quot;Спотыкач&quot;' }));

 

            group3

                .add(new ymaps.Placemark([50.443334, 30.520163], { id: 'group-3-1', balloonContent: 'Музей грамзаписи и старинных музыкальных инструментов' }))

                .add(new ymaps.Placemark([50.446977, 30.505269], { id: 'group-3-2', balloonContent: 'Музей истории медицины или Анатомический театр' }))

                .add(new ymaps.Placemark([50.452512, 30.530889], { id: 'group-3-3', balloonContent: 'Музей воды. Водно-информационный центр' }));

 

            group4

                .add(new ymaps.Placemark([50.45987, 30.516174], { id: 'group-4-1', balloonContent: 'Замок Ричарда-Львиное сердце' }))

                .add(new ymaps.Placemark([50.445049, 30.528598], { id: 'group-4-2', balloonContent: '&quot;Дом с химерами&quot;' }))

                .add(new ymaps.Placemark([50.449156, 30.511809], { id: 'group-4-3', balloonContent: 'Дом Рыцаря' }));

 

 

пустьздесьядаммассив $json = json_encode($metki); внембудут  id, town - город,  address- адрес, lat- широта,          lon- долгота, id_cat- id категорииккоторойнужноотнести 

и третий код 

 

 // Добавляем все группы в одну коллекцию.
 visible
     .add(group1)
     .add(group2)
     .add(group3)
     .add(group4);

  

и эти все массивы надо объявить в цикле, если я не ошибаюсь, реально не знаю как сделать еще в php что-то бы сделал, но не в js. Большое спасибо за ответ. 

4 комментария
меню,Javascript,API 2.0,коллекции
Как подсвечивать метки при наведении курсора на объект ВНЕ яндекс карт?
Андрей Завьялов
26 декабря 2013, 18:05

Пример: https://hotels.eviterra.com/hotels/?q=Vyborg&guests=6

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

Вот такая вот простая задача. Нигде не могу найти данную функцию.

И так же интересует способ вывести список меток на карту без меню и подменю, как здесь http://dimik.github.io/ymaps/examples/group-menu/menu02.html

5 комментариев
меню,API 2.0,коллекции