У меня есть карта-буклет, на которой есть круговые маркеры, нанесенные по долготе и широте с использованием массива маркеров, поступающего из AJAX REQUEST. Все работает нормально. Я пытаюсь поработать над рисованием прямоугольника вокруг набора маркеров, уже находящихся на карте, это должно отфильтровать маркеры круга на карте листовки и таблице HTML на странице.
Ниже показано, как я добавляю маркер круга на карту:
var cMarkers = [];
for (var i = 0; i < markers.length; ++i) {
var marker = L.circleMarker([markers[i].lat, markers[i].lng], { radius: 2, color: getColor(markers[i].type) })
.bindPopup('<a href="' + markers[i].url + '" target="_blank">' + markers[i].number+ '</a>')
.addTo(map);
cMarkers.push(marker);
}
Ниже приведен код, в котором я должен нарисовать прямоугольник вокруг набора маркеров, но в настоящее время он ничего не делает, кроме тех случаев, когда я нахожу курсор на прямоугольник, он предупреждает меня о длине и широте прямоугольника. Прямоугольник остается на карте и не фильтрует и не делает ничего, кроме рисования прямоугольника.
// Initialise the FeatureGroup to store editable layers
var editableLayers = new L.FeatureGroup();
map.addLayer(editableLayers);
var drawPluginOptions = {
position: 'topright',
draw: {
// disable toolbar item by setting it to false
polyline: false,
circle: false, // Turns off this drawing tool
polygon: false,
rectangle: true,
marker: false,
},
edit: {
featureGroup: editableLayers, //REQUIRED!!
remove: true
}
};
// Initialise the draw control and pass it the FeatureGroup of editable layers
var drawControl = new L.Control.Draw(drawPluginOptions);
map.addControl(drawControl);
var editableLayers = new L.FeatureGroup();
map.addLayer(editableLayers);
map.on('draw:created', function (e) {
var type = e.layerType,
layer = e.layer;
if (type === 'rectangle') {
layer.on('mouseover', function () {
alert(layer.getLatLngs());
});
}
editableLayers.addLayer(layer);
});
Фрагмент jquery, который я использую для создания таблицы HTML, основан на массиве маркеров:
var html = '<table id="tabledt">';
html += '<thead>';
html += '<tr>';
var flag = 0;
$.each(markers[0], function (index, value) {
html += '<th>' + index + '</th>';
});
html += '</tr>';
html += '</thead>';
html += '<tbody>';
$.each(markers, function (index, value) {
html += '<tr data-id="' + index + '">';
$.each(value, function (index2, value2) {
html += '<td>' + value2 + '</td>';
});
html += '</tr>';
});
html += '</tbody>';
html += '</table>';
$('#dvTable').html(html);
$('#tabledt th:nth-child(1),#tabledt td:nth-child(1)').remove();
В настоящее время страница загружается со всеми маркерами на карте, а в таблице есть данные. Затем я хочу нарисовать прямоугольник и этот фильтр для этих маркеров и обновить таблицу html. Как я могу получить только маркеры в нарисованном прямоугольнике и отфильтровать их на карте листовок и в таблице html на странице?