Есть ли у кого-нибудь опыт сопоставления JavaScript с leaflet.js, turf.js и mapbox? Я пытаюсь использовать функцию объединения turf для объединения нескольких серий полигонов, которые я извлекаю из файла geoJSON. Любая помощь с благодарностью!
Команда объединения turf.js: https://turfjs.org/docs/#union
Я вызываю данные по округам Техаса из файла GeoJSON, как показано ниже. У меня уже есть код для обозначения наборов округов из агломерации одного цвета - см. Ниже. Я пытаюсь использовать функцию объединения turf.js, чтобы превратить каждый из этих наборов - например, 3 округа для Абилина и 5 округов для Амарилло, показанные ниже - для создания объединенных (мульти) полигонов для каждого набора округов, включая устранение внутренних границ и позволяя каждому быть выбранным в качестве единицы для отображения всплывающего окна.
// Creating map object
var map = L.map("map", {
center: [31, -97],
zoom: 6
});
// Adding tile layer
L.tileLayer("https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}", {
attribution: "Map data © <a href=\"https://www.openstreetmap.org/\">OpenStreetMap</a> contributors, <a href=\"https://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>, Imagery © <a href=\"https://www.mapbox.com/\">Mapbox</a>",
maxZoom: 18,
id: "mapbox.streets",
accessToken: API_KEY
}).addTo(map);
var link = "https://raw.githubusercontent.com/TNRIS/tx.geojson/master/counties/tx_counties.geojson";
// Function that will determine the color of a metropolitan area based on the county it belongs to
function chooseColor(COUNTY) {
switch (COUNTY) {
//Abilene
case "Callahan County":
return "pink";
case "Jones County":
return "pink";
case "Taylor County":
return "pink";
//Amarillo
case "Armstrong County":
return "lightgreen";
case "Carson County":
return "lightgreen";
case "Oldham County":
return "lightgreen";
case "Potter County":
return "lightgreen";
case "Randall County":
return "lightgreen";
default:
return "black";
}
}
// Grabbing our GeoJSON data..
d3.json(link, function(data) {
// Creating a geoJSON layer with the retrieved data
L.geoJson(data, {
style: function(feature) {
return {
color: "white",
fillColor: chooseColor(feature.properties.COUNTY),
fillOpacity: 1,
weight: 1.5
};
}
}).addTo(map);
});
Не могу понять, как структурировать команду turf.union и хотел бы помочь!