x__miller_x
@x__miller_x

Как убрать элемент с яндекс.карт?

Добрый день!

На сайте имеется яндекс.карта, реализованная следующим методом:
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<script type="text/javascript">
ymaps.ready(function(){
        moscow_map = new ymaps.Map("banner_map", {
            center: [56.34820425, 41.30735193],
            zoom: 17
        });
var myPlacemark = new ymaps.Placemark([56.34820425, 41.30735193], {}, {
        iconLayout: 'default#image',
        iconImageHref: '/images/map_mark.png',
        iconImageSize: [48, 64],
        iconImageOffset: [-24, -64]
    });

moscow_map.geoObjects.add(myPlacemark);
    });
</script>

Соответственно на ней имеются все стандартные элементы управления:
поиск, увеличивалка, слои, пробки и т.д.

В документации нашел такую штуку removeControl(), но не понимаю, как ее использовать. Был бы благодарен за помощь.
  • Вопрос задан
  • 11959 просмотров
Решения вопроса 1
forgotten
@forgotten
Руководитель разработки API Яндекс.Карт
Выношу из комментов:

В документации нет removeControl ;)
Вообще элементы управления удаляются через map.controls.remove('searchControl').
Но в вашем случае, насколько я понимаю, достаточно задать список нужных контролов прямо в конструкторе карты.
https://tech.yandex.ru/maps/jsbox/2.1/customSet_co...
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/refe...
Хотя я не очень понимаю, зачем убирать стандартные элементы управления.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@trefferr
В инициализации конструктора карт, присваиваешь свойству пустой массив.
controls: []
ymaps.ready(function(){
        moscow_map = new ymaps.Map("banner_map", {
            center: [56.34820425, 41.30735193],
            controls: [],
            zoom: 17
        });
Ответ написан
Rikcon
@Rikcon
moscow_map.removeControl(YMaps.Zoom());
попробуйте, я уже точно не помню как оно работает.

UPD
Если не сработает так то попробуйте еще

var zoomControl = new YMaps.Zoom();
moscow_map.removeControl(zoomControl);
Ответ написан
Sadist07
@Sadist07
Верстальщик, Недо дизайнер
Если честно странно при в данный момент не должно быть вообще не каких элементов.... Кроме той что вы создали var myPlacemark = new ymaps.Placemark([56.34820425, 41.30735193]........................
и добавили moscow_map.geoObjects.add(myPlacemark);

Вообщем попробуй переделать вызов карты по аналогу....
<div class="img" id="YMapsID">
					
</div>

<script src="http://api-maps.yandex.ru/1.1/index.xml" type="text/javascript"></script>
	<script type="text/javascript">
	    // Создает обработчик события window.onLoad
	    YMaps.jQuery(function () {
	        // Создает экземпляр карты и привязывает его к созданному контейнеру
	        var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
	            
	        // Устанавливает начальные параметры отображения карты: центр карты и коэффициент масштабирования
	        map.setCenter(new YMaps.GeoPoint(30.349234, 59.940919), 15);


	        // Создает стиль
			var s = new YMaps.Style();

			// Создает стиль значка метки
			s.iconStyle = new YMaps.IconStyle();
			s.iconStyle.href = "img/map.png";
			s.iconStyle.size = new YMaps.Point(140, 139);
			s.iconStyle.offset = new YMaps.Point(-140, -139);

			// Создает метку 
			var placemark = new YMaps.Placemark(new YMaps.GeoPoint(30.349234, 59.940919), {style: s});
			var placemark2 = new YMaps.Placemark(new YMaps.GeoPoint(30.249336, 60.015226), {style: s});

			// Устанавливает содержимое балуна
			placemark.name = "Плов без слов";
			placemark.description = "Литейный пр., 28";

			placemark2.name = "Плов без слов";
			placemark2.description = "Комендатский пр., 30";

			// Создает группу меток

			var group = new YMaps.GeoObjectCollection();
	        group.add(placemark);
	        group.add(placemark2);

	        // Добавляет группу меток на карту
			map.addOverlay(group);

						// Действия при добавлении элемента на карту

			function OfficeNavigator (offices) {

			this.onAddToMap = function (map, position) {
			        this.container = YMaps.jQuery("<ul></ul>")
			        this.map = map;
			        this.position = position || new YMaps.ControlPosition(YMaps.ControlPosition.TOP_RIGHT, new YMaps.Size(10, 10));

			        // CSS-свойства, определяющие внешний вид элемента
			        this.container.css({
			            position: "absolute",
			            zIndex: YMaps.ZIndex.CONTROL,
			            listStyle: 'none',
			            padding: '10px',
			            margin: 0
			        });
			        
			        // Формирует список офисов
			        this._generateList();
			        
			        // Располагает элемент управления в верхнем правом углу карты
			        this.position.apply(this.container);
			        
			        // Добавляет элемент управления на карту
			        this.container.appendTo(this.map.getContainer());
			}

			// Обработчик удаления элемента управления с карты
			this.onRemoveFromMap = function () {
			    if (this.container.parent()) {
			        this.container.remove();
			        this.container = null;
			    }
			    this.map = null;
			};


							// Формирует выпадающий список офисов
				this._generateList = function () {
				    var _this = this;
				    
				    // Вызывает функцию-обработчик для каждого объекта
				    offices.forEach(function (obj) {
				        // Создает ссылку на объект
				        var li = YMaps.jQuery("<li><a href=\"#\">" + obj.description + "</li>"),
				            a = li.find("a"); 
				        
				        // Создает обработчик щелчка мыши по ссылке
				        li.bind("click", function () {
				            _this.map.panTo(obj.getGeoPoint(), {
				                flying: 1,
				                callback: function () {
				                    size: "large";
				                }
				            });
				            return false;
				        });
				        
				        // Создает слушатели событий открытия и закрытия балуна объекта
				        YMaps.Events.observe(obj, obj.Events.BalloonOpen, function () {
				            a.css("text-decoration", "none");
				        });
				        
				        YMaps.Events.observe(obj, obj.Events.BalloonClose, function () {
				            a.css("text-decoration", "");
				        });
				        
				        // Добавляет ссылку на объект в общий список
				        li.appendTo(_this.container);
				    });
				};
			}

				// Создает элемент управления "Путеводитель по офисам"
				map.addControl(new OfficeNavigator(group));

			// Добавляет метку на карту
			/*
			map.addOverlay(placemark);
			map.addOverlay(placemark2);
			*/


			// Создает элемент масштабирования
			var smallZoomControl = new YMaps.SmallZoom();
			map.addControl(smallZoomControl);




		})
	</script>


Правда тебе нужна ток верхняя часть до момента группировки меток.
Ответ написан
Rema1ns
@Rema1ns
и так сойдет
Если вы имеете ввиду что удалить placemark, То вам необходимо элементы заносить в свою коллекцию
создать свою коллекцию - myCollection = new ymaps.GeoObjectCollection();
создать плейсмарк - placemark[id] = new ymaps.Placemark
добавить плейсмарк в коллекцию - myCollection.add(placemark[id]);
удалить все myCollection.removeAll(); или удалить какой то конкретный
Ответ написан
Ваш ответ на вопрос

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

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