在 OSM 中使用 leaflet.js 第二次单击时删除 pin/marker?
Remove pin/marker on second click with leaflet.js in OSM?
标记的放置工作正常,但现在我希望如果客户设置错误的标记(错误的位置)能够点击已经放置的标记并将其删除(确认后)。问题是:有没有办法处理点击已放置的标记,而不是将另一个标记粘贴到它上面或附近?
var mymap = L.map('map').setView([42.148271, 24.750240], 17);
$(document).ready(function() {
$('#map').css('width', $('.vc_custom_1538133669144').width());
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
accessToken: 'not-needed',
}).addTo(mymap)
L.marker([42.148271, 24.750240]).addTo(mymap);
mymap.on('click', onMapClick);
});
function onMapClick(e) {
$('#map').append('<label>test:</label><input type="hidden" name="map_coords" id="file" value="' + e.latlng.lat + '|' + e.latlng.lng + '"/>');
L.marker([e.latlng.lat, e.latlng.lng]).addTo(mymap);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
<div id="map" style="height: 500px;">
</div>
为标记添加点击监听器:
var mymap = L.map('map').setView([42.148271, 24.750240], 17);
$(document).ready(function() {
$('#map').css('width', $('.vc_custom_1538133669144').width());
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
accessToken: 'not-needed',
}).addTo(mymap)
L.marker([42.148271, 24.750240]).addTo(mymap);
mymap.on('click', onMapClick);
});
function onMapClick(e) {
$('#map').append('<label>test:</label><input type="hidden" name="map_coords" id="file" value="' + e.latlng.lat + '|' + e.latlng.lng + '"/>');
var marker = L.marker([e.latlng.lat, e.latlng.lng]).addTo(mymap);
marker.on('click',function(e) { // new code here
this.remove();
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
<div id="map" style="height: 500px;">
</div>
标记的放置工作正常,但现在我希望如果客户设置错误的标记(错误的位置)能够点击已经放置的标记并将其删除(确认后)。问题是:有没有办法处理点击已放置的标记,而不是将另一个标记粘贴到它上面或附近?
var mymap = L.map('map').setView([42.148271, 24.750240], 17);
$(document).ready(function() {
$('#map').css('width', $('.vc_custom_1538133669144').width());
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
accessToken: 'not-needed',
}).addTo(mymap)
L.marker([42.148271, 24.750240]).addTo(mymap);
mymap.on('click', onMapClick);
});
function onMapClick(e) {
$('#map').append('<label>test:</label><input type="hidden" name="map_coords" id="file" value="' + e.latlng.lat + '|' + e.latlng.lng + '"/>');
L.marker([e.latlng.lat, e.latlng.lng]).addTo(mymap);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
<div id="map" style="height: 500px;">
</div>
为标记添加点击监听器:
var mymap = L.map('map').setView([42.148271, 24.750240], 17);
$(document).ready(function() {
$('#map').css('width', $('.vc_custom_1538133669144').width());
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
accessToken: 'not-needed',
}).addTo(mymap)
L.marker([42.148271, 24.750240]).addTo(mymap);
mymap.on('click', onMapClick);
});
function onMapClick(e) {
$('#map').append('<label>test:</label><input type="hidden" name="map_coords" id="file" value="' + e.latlng.lat + '|' + e.latlng.lng + '"/>');
var marker = L.marker([e.latlng.lat, e.latlng.lng]).addTo(mymap);
marker.on('click',function(e) { // new code here
this.remove();
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
<div id="map" style="height: 500px;">
</div>