在 Leaflet 中显示来自 GeoJSON 文件的多边形标记
Show a marker for polygons from a GeoJSON file in Leaflet
我有一张传单 JS 地图,它显示来自 GeoJSON 文件的数据。然而,geojson 中的某些特征是多边形,有些是点。我想用一个点替换每个多边形(在质心中,在 bbox 的平均值中,无论如何,没关系,准确性并不那么重要),这样我就可以 "point-ify" 整个geojson 文件,并只为每个点显示一个传单标记,或将多边形转换为一个点。我不想显示多边形的轮廓。
您可以使用 L.GeoJSON
图层的 onEachFeature
选项,它为您的特征集合中的每个特征采用一个 运行 的函数。在那里你可以区分点和多边形。一个简单的例子:
var map = L.map('map', {
center: [0, 0],
zoom: 0
});
var geoJsonLayer = L.geoJson(featureCollection, {
onEachFeature: function (feature, layer) {
// Check if feature is a polygon
if (feature.geometry.type === 'Polygon') {
// Don't stroke and do opaque fill
layer.setStyle({
'weight': 0,
'fillOpacity': 0
});
// Get bounds of polygon
var bounds = layer.getBounds();
// Get center of bounds
var center = bounds.getCenter();
// Use center to put marker on map
var marker = L.marker(center).addTo(map);
}
}
}).addTo(map);
我有一张传单 JS 地图,它显示来自 GeoJSON 文件的数据。然而,geojson 中的某些特征是多边形,有些是点。我想用一个点替换每个多边形(在质心中,在 bbox 的平均值中,无论如何,没关系,准确性并不那么重要),这样我就可以 "point-ify" 整个geojson 文件,并只为每个点显示一个传单标记,或将多边形转换为一个点。我不想显示多边形的轮廓。
您可以使用 L.GeoJSON
图层的 onEachFeature
选项,它为您的特征集合中的每个特征采用一个 运行 的函数。在那里你可以区分点和多边形。一个简单的例子:
var map = L.map('map', {
center: [0, 0],
zoom: 0
});
var geoJsonLayer = L.geoJson(featureCollection, {
onEachFeature: function (feature, layer) {
// Check if feature is a polygon
if (feature.geometry.type === 'Polygon') {
// Don't stroke and do opaque fill
layer.setStyle({
'weight': 0,
'fillOpacity': 0
});
// Get bounds of polygon
var bounds = layer.getBounds();
// Get center of bounds
var center = bounds.getCenter();
// Use center to put marker on map
var marker = L.marker(center).addTo(map);
}
}
}).addTo(map);