Я понял проблему, хотя у меня есть тысячи булавок на карте, я использую инструмент рисования, чтобы рисовать фигуры свободной рукой, а затем выполняю пересечение на событии «DrawingEnded», хотя я мог видеть, что пересечение должно возвращать больше, чем оно на самом деле возвращается,
Я что-то упустил? Например, если под новой нарисованной областью находится около 500 пинов, метод пересечения возвращает только 100 или несколько больше,
Конфигурация My Spider Cluster:
Microsoft.Maps.loadModule (['SpiderClusterManager'], function () {
spiderManager = new SpiderClusterManager(map, pinssame, {
//clusteredPinCallback: function (cluster) {
// //Customize clustered pushpin.
// cluster.setOptions({
// color: 'red',
// icon:'https://www.bingmapsportal.com/Content/images/poi_custom.png'
// });
//},
pinSelected: function (pin, cluster) {
if (cluster) {
showInfobox(cluster.getLocation(), pin);
} else {
showInfobox(pin.getLocation(), pin);
}
},
pinUnselected: function () {
hideInfobox();
},
gridSize: 80
});
});
`
Код функции пересечения, который срабатывает после события «DrawingEnded»:
`function findIntersectingData (searchArea) {
// Убедитесь, что область поиска является допустимым многоугольником, в его кольце должно быть 4 местоположения, поскольку оно автоматически закрывается.
if (searchArea && searchArea.getLocations (). length> = 4) {
//Get all the pushpins from the pinLayer.
//var pins = spiderManager._data;
//Using spatial math find all pushpins that intersect with the drawn search area.
//The returned data is a copy of the intersecting data and not a reference to the original shapes,
//so making edits to them will not cause any updates on the map.
var intersectingPins = Microsoft.Maps.SpatialMath.Geometry.intersection(pins, searchArea);
//The data returned by the intersection function can be null, a single shape, or an array of shapes.
if (intersectingPins) {
//For ease of usem wrap individudal shapes in an array.
if (intersectingPins && !(intersectingPins instanceof Array)) {
intersectingPins = [intersectingPins];
}
var selectedPins = [];
//Loop through and map the intersecting pushpins back to their original pushpins by comparing their coordinates.
for (var j = 0; j < intersectingPins.length; j++) {
for (var i = 0; i < pins.length; i++) {
if (Microsoft.Maps.Location.areEqual(pins[i].getLocation(), intersectingPins[j].getLocation())) {
selectedPins.push(pins[i]);
break;
}
}
}
//Return the pushpins that were selected.
console.log(selectedPins);
return selectedPins;
}
}
return null;
}
`
Функция не возвращает точные данные пина,
Я что-то здесь упускаю?
Любая помощь оценена,
Спасибо и С уважением,
Шохил Сетия
ОБНОВЛЕНИЕ:
Просто понял, это предположение, у меня есть несколько пинов с одинаковыми координатами над слоем. Это причина того, что он возвращает только пины, которые пересекаются с разными координатами по карте?,
Спасибо и С уважением,
Шохил Сетия