@cheburashkaRF

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

Есть карта с множеством меток, по клику по которой показывается балун с информацией, проблема в том что когда показывается балун исчезает сама метка, подскажите как это исправить?
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
ymaps.ready(function () {
			var myMap = new ymaps.Map('map', {
				center: [55.592258, 37.155939],
				zoom: 4,
				behaviors: ["drag","scrollZoom","dblClickZoom", "rightMouseButtonMagnifier", "multiTouch"] ,
				controls:['smallMapDefaultSet']
			}),

			// Создание метки 
			myCollection_MAP_ALL = new ymaps.GeoObjectCollection(),
				// Создание макета балуна на основе Twitter Bootstrap.
				MyBalloonLayout = ymaps.templateLayoutFactory.createClass(
					'<div class="popover top">' +
						'<div class="arrow"></div>' +
						'<div class="popover-inner">' +
							'<a class="close" href="#">&times;</a>' +
							'$[[options.contentLayout observeSize minWidth=235 maxWidth=235 maxHeight=350]]' +
						'</div>' +
					'</div>', {
						/*
							* Строит экземпляр макета на основе шаблона и добавляет его в родительский HTML-элемент.
						*/
						build: function () {
							this.constructor.superclass.build.call(this);

							this._$element = $('.popover', this.getParentElement());

							this.applyElementOffset();

							this._$element.find('.close')
								.on('click', $.proxy(this.onCloseClick, this));
						},

						/*
							* Удаляет содержимое макета из DOM.
						*/
						clear: function () {
							this._$element.find('.close')
								.off('click');

							this.constructor.superclass.clear.call(this);
						},

						/*
							* Метод будет вызван системой шаблонов АПИ при изменении размеров вложенного макета.
						*/
						onSublayoutSizeChange: function () {
							MyBalloonLayout.superclass.onSublayoutSizeChange.apply(this, arguments);

							if(!this._isElement(this._$element)) {
								return;
							}

							this.applyElementOffset();
							this.events.fire('shapechange');
						},

						/**
						* Сдвигаем балун, чтобы "хвостик" указывал на точку привязки.
						*/
						applyElementOffset: function () {
							this._$element.css({
								left: -(this._$element[0].offsetWidth / 2),
								top: -(this._$element[0].offsetHeight + this._$element.find('.arrow')[0].offsetHeight)
							});
						},

						/*
							* Закрывает балун при клике на крестик, кидая событие "userclose" на макете.
						*/
						onCloseClick: function (e) {
							e.preventDefault();
							this.events.fire('userclose');
						},

						/*
							* Используется для автопозиционирования (balloonAutoPan).
						*/
						getShape: function () {
							if(!this._isElement(this._$element)) {
								return MyBalloonLayout.superclass.getShape.call(this);
							}

							var position = this._$element.position();

							return new ymaps.shape.Rectangle(new ymaps.geometry.pixel.Rectangle([
								[position.left, position.top], [
									position.left + this._$element[0].offsetWidth,
									position.top + this._$element[0].offsetHeight + this._$element.find('.arrow')[0].offsetHeight
								]
							]));
						},

						/*
							* Проверяем наличие элемента (в ИЕ и Опере его еще может не быть).
						*/
						_isElement: function (element) {
							return element && element[0] && element.find('.arrow')[0];
						}
				}),
				// Создание вложенного макета содержимого балуна.
				MyBalloonContentLayout = ymaps.templateLayoutFactory.createClass(
					'<h3 class="popover-title">$[properties.balloonHeader]</h3>' +
					'<div class="popover-content">$[properties.balloonContent]</div>'
				);
			<?php
				foreach($date as $k => $v){
					$coords = explode(",", $v[PROPERTY_YANDEX_MAP_VALUE]);
					?>
					var myPlacemark = new ymaps.Placemark(
						// Координаты метки
						[<?=$coords[0]?>,<?=$coords[1]?>],
						{
							balloonHeader:		`<strong><?=$v["NAME"]?></strong>`,
							balloonContent: 	`
                                <p>
                                    <strong>Телефон:</strong> 
                                    <?=$v["PROPERTY_PHONES_VALUE"]?>
                                </p>
                                <p>
                                    <strong>Режим работы:</strong> 
                                    <?=$v["PROPERTY_WORK_HOURS_VALUE"]?>
                                </p>
                                <p>
                                    <strong>Адрес:</strong> 
                                    <?=$v["PROPERTY_ADRESS_VALUE"]?>
                                </p> 
							`
						}, {
							balloonShadow: false,
							balloonLayout: MyBalloonLayout,
							balloonContentLayout: MyBalloonContentLayout,
							balloonPanelMaxMapArea: 0
						}
					);
					myCollection_MAP_ALL.add(myPlacemark);

					<?
				}
			?>

			// Добавление метки на карту
			myMap.geoObjects.add(myCollection_MAP_ALL);
			myMap.behaviors.enable('drag');

		})
  • Вопрос задан
  • 820 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы