Как выделить маркеры и убрать их в листовку с помощью jquery? - PullRequest
0 голосов
/ 06 января 2020

У меня есть этот код ниже. То, что я пытаюсь сделать, это получить эту кнопку «$ (# zoomTo» + str2.replace (/ / g, '')), чтобы добавить маркер точки или круга к указанному / выделить несколько, как узнать, что вы находитесь на эта точка на карте.

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

Пожалуйста, помогите! Спасибо!

function refreshAttractions(){
$.ajax({url:'getdata.php',
	type: 'POST',
	success: function(response){
		if (lyrAttractions){
			mymap.removeLayer(lyrAttractions);
			$("#sidebar").html("");
			};
// goes through each point and creats a button id on the sidebar. 
		lyrAttractions=L.geoJSON(JSON.parse(response), {pointToLayer: function(feature, latlng){
			var str2 =  feature.properties.restaurant.replace(/'/g, '')	
			var str = "<button id = 'zoomTo"+str2.replace(/ /g, '');
			str += "'class='form-control btn-primary eats'>";
			str += feature.properties.restaurant + "</button>";
			$("#sidebar").append(str);

//creates popup info
			var str3 = feature.properties.restaurant+"<hr>";
			str3 += "Meal: " + feature.properties.meal+"<br>";
			str3 += "Price: " + feature.properties.price+"<br>";
			str3 += "Neighbourhood: " + feature.properties.neighbourhood+"<br>";
			str3 += "Submitted by: " + feature.properties.name+"<br>";
			str3 += "</a><br><button id='btnEdit' class='btn btn-primary center-block' onclick='editAttractions("+feature.properties.id2+")'>Edit</button>";
							
//used to zoom to area when you click on the button. 
			$("#zoomTo"+str2.replace(/ /g, '')).click(function(){
			mymap.setView([latlng.lat,latlng.lng],18);
			});
							
//trying to figure out how to remove the circle marker when clicked on another button
			$("#zoomTo"+str2.replace(/ /g, '')).click(function(){
			var high = L.circleMarker([latlng.lat,latlng.lng],{color: 'green',weight: 7,radius: 25 });
			high.addTo(mymap);
			//mymap.removeLayer(high);
			});
				
			return L.marker(latlng).bindPopup(str3);
        }}); 
		lyrAttractions.addTo(mymap);
}});
};
		

1 Ответ

0 голосов
/ 06 января 2020

Переместите переменную, содержащую маркер, за пределы функции щелчка, а затем используйте ее, чтобы удалить старый маркер, прежде чем добавить новый.

var high;

$("#zoomTo"+str2.replace(/ /g, '')).click(function(){
    if (mymap.hasLayer(high)) {
        mymap.removeLayer(high);
    }
    high = L.circleMarker([latlng.lat,latlng.lng],{color: 'green',weight: 7,radius: 25 });  
    high.addTo(mymap);

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...