@MaxKondratenko

Как добавлять и удалять маркеры google maps api v3?

Рылся на просторах интернета, скорее всего я плохо ищу и не могу найти , то что мне нужно.
В общем то опишу проблему .
Есть бд, из неё я подгружаю объекты, у каждого из них есть координаты, плюс описание, плюс фото.
Теперь мне по полученным координатам нарисовать маркеры с инфоокнами.
плюс минус понятно как это сделать , описано это здесь
Но после я начинаю применять фильтры и некоторые объекты исчезают из dom. И видимо перед удалением объектов из дом мне нужно удалить некоторые маркеры.
Находил варианты где можно удалить полностью все маркеры и отрисовать по новой, но такой вариант мне не нравится, на крайний случай конечно можно будет так сделать, но мне кажется это глупым, удалять всё и рисовать по новой. Подскажите может кто уже делал такое, или ссылку на статейку где можно почитать подробнее.
Заранее спасибо.
  • Вопрос задан
  • 11970 просмотров
Решения вопроса 1
@MaxKondratenko Автор вопроса
в общем пошел другим путём ...
создаю массив маркеров по id который получаю
...........
//координаты маркера
var lat = ...;
var lng = ...;
var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
	
//присваиваем иконке изображение (в моём случае разные) поэтому нужна переменная		
var myicon = ...;

//создаём балун для каждого маркера с различным контентом
var contentString = '<div id="balloon">....</div>';
var infowindow = new google.maps.InfoWindow({
				content: contentString
				});

//создаём сам маркер				
markers[id] = new google.maps.Marker({
				icon: myicon,
				position: point,
				map: MYMAP,
				title: ...
			});
			
//добавляем событие при клике по маркеру 			
google.maps.event.addListener(markers[id], 'click', function() {
				infowindow.open(MYMAP,markers[id]);
				});
..............


удаляю маркеры когда это нужно очень просто по тому же id по которому они были созданы
.......
markers[id].setMap(null);
.......
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Примерно так

Пример codepen.io/cleric/pen/ioGcF

// Когда-то на заре вселенной была создана Она...
var myMap = new google.maps.Map(..., {...});
...
//И на 8-й день покрылась Она блоками и маркерами
for (...) {
	var block = $('<div>')
		.append(...)
		.data('marker', new google.maps.Marker({
			icon: ...,
			position: ...,
			title: ...
		}))
		.on('click', function () {
			// Удаляем и блок, и маркер
			var $item = $(this);

			$item.data('marker').setMap(null);
			$item.remove();
		})
		appendTo(...);

	block.data('marker').setMap(myMap);
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы