Клуб API Карт

Найдено на тему «Placemark»:
При клике на карту, как определить что клик был на гео объекте а не на пустом месте карты где нет меток?
tairov.87
8 ноября 2017, 15:14
    // Вешаем слушателя клика на коллекцию для меток
    placemarkcollection.events.add('click', function (e) {
        // Метка, на которой сработало событие
        var target = e.get('target');
        // Проверяем пресет метки - если его нет, ставим зелёный, если есть - делаем unset
        if(target.options.get('preset')) {
         target.options.unset('preset');
        } else {
         target.options.set('preset', 'islands#darkGreenCircleIcon');
        }
        document.getElementById("placemarkID").value = target.properties.get('iconContent');
        document.getElementById("placemarkPreset").value = target.options.get('preset');
    });

При клике на метку, получаю id метки. Но если просто кликнуть по карте, то снова получаю id метки по которой кликнул в последний раз. Как игнорировать такое событие?

2 комментария
API 2.1,click,placemark
Вращение картинки у Placemark
Дракон
6 ноября 2017, 02:58

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

Я создаю менеджер, указывая параметры по умолчанию:

myObjectManager2 = new ymaps.ObjectManager(
{
	geoObjectIconLayout: "default#image",
	geoObjectIconImageHref: "pages/data/images/dot.png",
	geoObjectIconImageSize: [11, 11],
	geoObjectIconImageOffset: [-6, -6]
});

После чего добавляю точки:

myObjectManager2.add(
{
	type: 'Feature',
	id: ID,
	geometry:
	{
		type: 'Point',
		coordinates: [X, Y]
	},
	options:
	{
		
	},
	properties:
	{
		
	}
});

В домументации ничего подходящего не нашёл :(

1 комментарий
placemark,layout
увеличение Placemark вместе с картой
Удалённый пользователь
8 октября 2017, 22:59

Добрый вечер. Есть Placemark, который сделан из SVG, изображение к тому же будет динамически меняется во времени. Требуется сделать масштабирование Placemark вместе с плавным масштабирование карты. В общем то, все получилось, но изображение Placemark мерцает, дергается и работает в Mozilla FF (в Хроме некорректно). Можно ли избавиться от этих деффектов иди м.б. есть другой способ (кроме Polygon)?
Код здесь.

4 комментария
API Яндекс карт,placemark
Как с помощью формы поиска установить свою метку?
Slim
5 июня 2017, 14:39

Следующим ниже кодом устанавливаю метку с возможностью перетаскивания (взял из примеров). Также на карте есть форма поиска, которая тоже ставит метку. И если я уже поставил свою метку мышкой , а потом решил поставить метку с  помощью формы поиска, то установится новая метка, и того на карте будет уже две метки. Но мне нужно чтобы при поиске через форму устанавливалась моя метка, а если она уже установлена то просто бы перемещалась на адрес найденый через поиск. Т.е. всего на карте должна быть максимум одна метка. Подскажите, пожалуйста, как тут быть?

ymaps.ready(init);
var myMap, 
    myPlacemark;

function init(){     
    myMap = new ymaps.Map("map", {
        center: [55.76, 37.64],
        zoom: 16,
        controls: ['zoomControl', 'fullscreenControl', 'typeSelector', 'rulerControl', 'searchControl']        
    });
    
    myMap.events.add('click', function (e) {
        var coords = e.get('coords');

        // Если метка уже создана – просто передвигаем ее.
        if (myPlacemark) {
            myPlacemark.geometry.setCoordinates(coords);
        }
        // Если нет – создаем.
        else {
            myPlacemark = createPlacemark(coords);
            myMap.geoObjects.add(myPlacemark);
            // Слушаем событие окончания перетаскивания на метке.
            myPlacemark.events.add('dragend', function () {
                myPlacemark.geometry.getCoordinates();
            });
        }
    });

    // Создание метки.
    function createPlacemark(coords) {
        return new ymaps.Placemark(coords, {
            iconCaption: 'метка...'
        }, {
            preset: 'islands#violetDotIconWithCaption',
            draggable: true
        });
    }
    
    
}

9 комментариев
Placemark,SearchControl
Клик по карте внутри круга с заливкой.
Александр В
20 мая 2017, 11:22


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

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

2 комментария
circle,click ,event,event disable,Placemark
Кастомизация меток с provider: yandex#search
seyin
18 мая 2017, 15:18

Есть поиск через SearchControl, как в примере: https://tech.yandex.ru/maps/jsbox/2.1/search_control_ppo

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

С провайдером yandex#search не работает опция noPlacemark, чтобы просто их не показывать. Сейчас я в then возвращаемого промиса сохраняю результаты, чищу поиск через searchControl.clear(), делаю свои метки, собираю кластеризатором и наношу обратно на карту. Это громоздко и глючит, т.к. искать нужно при драге карты, и если быстро таскать, нативные результаты таки успевают показаться.

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

1 комментарий
SearchControl,Placemark
Надпись на кастомной метке
SagaranoMail
12 апреля 2017, 19:13

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

Такая проблема: при установленном preset (для использования кастомной картинки) метка игнорирует свойство iconContent

Пример: https://jsfiddle.net/95h9mgjr/4/

Установленный в примере iconContentLayout роли не играет, без него то же самое. Возможно нужно переопределить iconLayout через templateLayoutFactory? Если да, то есть пример?

2 комментария
custom icon,Placemark,iconLayout,Preset
new ymaps.Placemark, задать max-width балуна
info@profatlas.ru
25 марта 2017, 19:45

Добрый день, есть код:

var myPlacemark = new ymaps.Placemark(coords, {

balloonContent: '<div style="width:1000px"></div>'

},

{

preset: 'islands#dotIcon'

maxWidth: '1000'//По идее тут, но нет

});

Суть вопроса, как задать балуну max-width?

2 комментария
Placemark,Balloon
Метка в виде диаграммы...
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
Добавление балуна для метки с геокодированием
Удалённый пользователь
14 февраля 2017, 11:40

Всем привет! Помогите пожалуйста, не могу реализовать одну вещь. Имеются два массива: address - массив адресов в текстовом виде, description - массив описаний для балуна. На карту необходимо добавить метки по адресам из address и к меткам добавить балуны из description. Вот что я делаю:

for(i = 0; i < adress.length; i++){
					ymaps.geocode(address[i]).then(
						function(res){
							var tmp = new ymaps.Placemark(res.geoObjects.get(0).geometry.getCoordinates(), {balloonContent: description[i]});
							myMap.geoObjects.add(tmp);
						},
						function(err){
							alert('Ошибка при добавлении точек на карту!');
						}
					);
				}

Метки добавляются на карту, но значение балунов undefined. Думаю это из-за того, что точки добавляются асинхронно из-за промисного метода .then()

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

geocode,.then(),Placemark,geoObjects
placemark внутри polygon
Sergey Il`ich
13 февраля 2017, 09:33

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

Рисую карту участков нашего села, участков не много, многоугольники. Хочу проставить им номера через placemark.

Как сделать, чтобы placemark размещался в центре многоугольника? И возможно, чтобы клик и по polygon, и по placemark открывал один и тот же балун? (сейчас балун у многоугольников, placemark`ов ещё нет)

5 комментариев
Polygon,Placemark,ballon
Перемещение Placemark на другие координаты(Плавно)
em@statuscom.ru
2 января 2017, 20:36

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

Имеется маркер :

    var Gea;
    myMap.geoObjects.add(Gea = new ymaps.Placemark([9.76170, -9.96540], {
           balloonContent: 'цвет <strong>воды пляжа бонди</strong>'
    },{
        preset: 'islands#blackCircleDotIconWithCaption',
        id:9999
    }));

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

var coords = e.get('coords');
        CoordLng = coords[0].toPrecision(6);
        CoordLat = coords[1].toPrecision(

Gea.geometry.setCoordinates([CoordLng , CoordLat ]);

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

2 комментария
Placemark,Animade,плавное  движение,setCoordinates
Изменить положение хинта
mvblog
28 декабря 2016, 16:42

Здравствуйте! Если на карту добавить хинт для какого-то placemark, то, при наведении на этот placemark, хинт будет появляться с правой стороны снизу от курсора и будет двигаться вместе в курсором, до тех пор, пока курсор будет находиться над placemark. Можно ли как-то параметризовать хинт, чтобы он

  1. Не двигался за курсором
  2. Появлялся всегда над меткой (placemark) и был по центру по отношению к ней?

Спасибо

1 комментарий
Placemark,Hint
Отключить стандартные балуны
mvblog
28 декабря 2016, 12:26

Здравствуйте. Я не могу отключить стандартные балуны на карте. Не те, которые я сам создаю, а именно стандартные, которые привязаны не к placemark, а к точкам на карте, являющиеся достопримечательностями магазинами и др.

Смотрите. Вот скрин карты 

Если я нажму на любую из меток, то откроется балун, пример которого представлен ниже

Вот как сделать так, чтобы таких балунов вообще на карте не было и такие кнопки были некликабелными. Спасибо.

2 комментария
Balloon,балун,кнопка,Placemark
Ошибка при загрузке карты API 2.1 + не отображается balloonContent
sportvokrug
13 декабря 2016, 15:55

Дорогие коллеги, 

помогите, пожалуйста, разобраться с такими тремя ошибками.

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

Первый вопрос - при испонении этого кода (код внизу) не отображается balloonContent , при наведении на метку мышка остается с указателем default, метка "не нажимается", никакой реакции на нажатие. Бабл не появляется. 

И второй вопрос - если я добавляю опцию draggable: true - на нее метка так же не реагирует. При попытке перетащить метку, перетащить получается только саму карту. 

И третий вопрос: есть два сервера, на которых лежат абсолютно идентичные сайты. Весь код проекта (должен быть) идентичен.

Первые два вопроса воспроизводятся на обоих серверах.

Однако на одном из них не возникает ошибки в консоли при загрузке карты, а на другом возникает. 

Ссылка на проект с ошибкой: http://rita.sosportom.ru/competitions/1930/map/

Ссылка на проект без ошибки: http://www.sportvokrug.ru/competitions/1930/map/

Ошибка в консоли: 

Uncaught TypeError: e.get(...).split is not a function(…)

combine.js?load=2c2p0e9Y0l;_1$,G90171!1*,F,E1:93,H1@1j951J1Z50$)1_555$0b0f9*2f9-9_9)9:9;2m9.2h9(0x0…:290

Вот код, который делает это:

Подключаем API:

<script type="text/javascript" src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script>

Теперь сам скрипт: 

	function makeMap(){
		ymaps.ready(function () {
			var
				mapElement = $('#map_canvas'),
				mapData = mapElement.find('.map_data'),
				item = mapData.find('li'),
				mapType = 'yandex#map';

			if(mapElement.length === 0) return;

			switch(item.find('.map_type').text()){
				case '0': mapType = 'yandex#map'; break;
				case '1': mapType = 'yandex#satellite'; break;
				case '2': mapType = 'yandex#hybrid'; break;
			}

			var defaultZoom = item.find('.zoom').text() ? item.find('.zoom').text() : 15;
			var latitude = $.trim(item.find('.latitude').text());
			var longitude = $.trim(item.find('.longitude').text());
			var balloonContent = item.find('.balloon_content').html();

			var map = new ymaps.Map(mapElement[0],{
				center: [latitude, longitude],
				zoom: defaultZoom,
				type: mapType,
				behaviors: ["default", "ruler"]
			});
			var placemark = new ymaps.Placemark(
				[latitude, longitude], 
				{
					balloonContent: balloonContent
				}, {
//						preset: 'islands#darkBlueIcon',
					iconLayout: 'default#image',
					iconImageHref: '/f/1/global/map_mark.png',
					iconImageSize: [37, 42],
					iconImageOffset: [-10, -42],
					draggable: false,
					hideIconOnBalloonOpen: false
				}
			);
			map.geoObjects.add(placemark);
		});
	}

Я заранее благодарю всех, кто откликнется и поможет -))) 

4 комментария
Placemark,API 2.1,error
Placemark показвает метки на одной странице и не показывает на другой
Смит
24 ноября 2016, 14:47

Здравствуйте, уважаемые разработчики! 

Placemark (яндекс карты) показывает метки на одной странице и не показывает на другой. 

Дано:
Движок Cotonti.
Плагин "Placemarks" (https://cmsworks.ru/catalog/plugins/placemarks).

Сайт: http://k38v38.myjino.ru
Страница на которой точки выводятся как надо: http://k38v38.myjino.ru/projects?map=1 
Страница, на которой точки косячат: http://k38v38.myjino.ru/projects 

Как видно в описании к плагину, вывод карты со всеми отмеченным проектами, происходит на отдельной странице: http://k38v38.myjino.ru/projects?map=1 
по ссылке: <a href="{PHP|cot_url('projects', 'map=1')}">Карта</a>.

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

<script type="text/javascript"> 
        var myMap, 
            myPlacemark;
        
        ymaps.ready(function () {
 
            myMap = new ymaps.Map("YMapsID", {
               center: [55.76, 37.64],
               zoom: 12
            }); 
     
            ymaps.geolocation.get({
               provider: 'yandex',
               mapStateAutoApply: true
            }).then(function (result) {
               myMap.geoObjects.add(result.geoObjects);
            });
 
            myMap.controls.add(
                new ymaps.control.ZoomControl()
            );
            <!-- IF {PHP.totalitems} > 0 -->
            myMap.geoObjects
                <!-- BEGIN: PRJ_ROWS -->
                .add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {
                    balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
                }))
                <!-- END: PRJ_ROWS -->;
            <!-- ENDIF -->
        });
         
    </script>
 
    <div id="YMapsID" style="height: 320px;"></div>

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

<!-- IF {PHP.totalitems} > 0 -->
            myMap.geoObjects
                <!-- BEGIN: PRJ_ROWS -->
                .add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {
                    balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
                }))
                <!-- END: PRJ_ROWS -->;
            <!-- ENDIF -->

3 комментария
не показывает метки,не показывает точки,не показывает балун,не показывает балон,placemark,cotonti
Как удалять метки, поставленные через setFilter, при обновлении RemoteObjectManager?
Melody Nelson
21 октября 2016, 16:14
В init получаю features из RemoteObjectManager
var objectManager = new ymaps.RemoteObjectManager('/api/maps/getFeatures&bbox=%b&zoom=%z',
{
    clusterHasBalloon: true,
    splitRequests: false,
    geoObjectOpenBalloonOnClick: false,
    clusterHideIconOnBalloonOpen: false
});

В зависимости от масштаба это либо полигоны - округа или районы, либо точки. У каждого округа и района в details есть цифра, и ее нужно выводить меткой, только когда виден этот округ/район.

Создаю коллекцию для будущих меток:

var myGeoObjects = new ymaps.GeoObjectCollection({}, {
                        preset: "islands#redCircleIcon",
                        strokeWidth: 4,
                        geodesic: true
                    });

В setFilter высчитываю центр полигона и помещаю метку в коллекцию:

cameraObjectManager.setFilter(function(object) {
    if (object.properties.details.objectType == 'DISTRICT') {
        var polygonGeometry = new ymaps.geometry.Polygon(object.geometry.coordinates);
        polygonGeometry.setMap(myMap);
        polygonGeometry.options.setParent(myMap.options);
        var pixelBounds = polygonGeometry.getBounds();
        var pixelCenter = [pixelBounds[0][0] + (pixelBounds[1][0] - pixelBounds[0][0]) / 2, (pixelBounds[1][1] - pixelBounds[0][1]) / 2 + pixelBounds[0][1]];

        var myPlacemark = new ymaps.Placemark(
            pixelCenter, {
                iconContent: object.properties.details.cameraCount,
                hintContent: object.properties.details.name,
                balloonContentBody: object.properties.details.name + ": " + object.properties.details.cameraCount + " камер"
            }, {
                preset: 'islands#blackStretchyIcon'
            }
        );

        myGeoObjects.add(myPlacemark);
    }


    return true;
});

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

myMap.geoObjects.add(objectManager);
myMap.geoObjects.add(myGeoObjects);

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

Что и в какой момент нужно вызывать, чтобы эта коллекция меток очищалась и удалялась с карты при каждом зуме/запросе RemoteObjectCollection?

GeoObject,GeoObjectCollection,RemoteObjectManager,Polygon,placemark
[РЕШЕНО] Как повесить событие "click" на объект из списка внутри кластера?
Александр
29 сентября 2016, 14:53

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

Я вешал событие на "balloonContentHeader" - создавал элемент с классом и при открытии кластера вешал событие на каждый элемент из списка. Проблема в том, что я использую "id" для каждого элемента из списка и таким образом - этот id дублируется в правой части списка (header). Пришлось засунуть этот id внутрь каждого объекта и вытаскивать его при видимости в кластере.

e.get('target').state.get('activeObject').properties.get('identifier')

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

8 комментариев
click,claster,событие,placemark
Картографическая генерализация
sedrak.dalaloyan
27 апреля 2016, 12:42

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

Подскажите, пожалуйста, у яндекс карт есть штатные возможности генерализации меток для разного зума?

1 комментарий
метка,zoom,генерализация,placemark
Не работает задание некоторых типов курсора для меток
FlinnRaider
24 марта 2016, 19:13

Собственно, заголовок все объясняет.

Вот тут есть пример - https://jsfiddle.net/6wx359bd/ - вместо указанных используется "grab" в хроме и "move" в файерфоксе (вообще на всей карте, независимо от того, наведен ли курсор на метку или нет).

При этом в документации css - https://developer.mozilla.org/ru/docs/Web/CSS/cursor все работает (нужно понаводить мышкой на подсвеченные иконки).

В чем проблема и можно ли ее решить?

2 комментария
placemark,CSS,курсор