Примерный код, который возможно поможет вам. Точка на карте для каждого абонента всё равно подразумевает что вы должны изначально знать координаты точки на карте от абонента
// Функция для определения принадлежности координат абонента полигону
function isPointInPolygon(point, polygon) {
var polygonCoords = polygon.geometry.coordinates[0];
var x = point[0],
y = point[1];
var inside = false;
for (var i = 0, j = polygonCoords.length - 1; i < polygonCoords.length; j = i++)
{
var xi = polygonCoords[i][0],
yi = polygonCoords[i][1];
var xj = polygonCoords[j][0],
yj = polygonCoords[j][1];
var intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;
if (intersect) inside = !inside;
}
return inside;
}
$(document).ready(function () {
$.getJSON("абоненты.json", function (data) {
$.each(data, function (index, abonent) {
var coordinates = abonent.coordinates;
var $polygon = $(".polygon").filter(function () {
var polygonId = $(this).data("id");
var polygon = geojson.features.find(function (feature) {
return feature.properties.id === polygonId;
});
return isPointInPolygon(coordinates, polygon);
});
if (abonent.status === "оплатил") {
var count = $polygon.data("paidCount") || 0;
$polygon.data("paidCount", count + 1);
}
});
$(".polygon").each(function () {
var polygonId = $(this).data("id");
var paidCount = $(this).data("paidCount") || 0;
console.log("Полигон " + polygonId + " - оплатили " + paidCount + " чел.");
});
});
});
// Предположим, у вас есть GeoJSON-объект, представляющий полигоны на карте
var geojson = {
type: "FeatureCollection",
features: [
{
type: "Feature",
properties: { id: 1 },
geometry: {
type: "Polygon",
coordinates: [
[
[55.753215, 37.622504], // Координаты вершин полигона 1
[55.753215, 37.623504],
[55.754215, 37.623504],
[55.754215, 37.622504],
[55.753215, 37.622504]
]
]
}
},
{
type: "Feature",
properties: { id: 2 },
geometry: {
type: "Polygon",
coordinates: [
[
[55.7558, 37.6176], // Координаты вершин полигона 2
[55.7558, 37.6186],
[55.7568, 37.6186],
[55.7568, 37.6176],
[55.7558, 37.6176]
]
]
}
},
// Добавьте другие полигоны
]
};
Пример json Объекта который использовал я
[
{
"name": "Абонент 1",
"status": "оплатил",
"coordinates": [55.753215, 37.622504]
},
{
"name": "Абонент 2",
"status": "не оплатил",
"coordinates": [55.7558, 37.6176]
}
]