在传单地图中绘制之前将GeoJSON多边形转换为指向点

奥比托(O'Bieito)

我有一个包含点和多边形的GeoJSON数据集。我有一个简单的Leaflet代码,可以将它们读入地图,如下所示:

var MyLayer = new L.GeoJSON.AJAX("/UrbanSyntax/Desarrollo/twitter    /data/boxtest.json", {

pointToLayer: function(feature, latlng) {      
return new L.CircleMarker(latlng, {
  radius: 3,
  fillOpacity: 0.75,
  color: getColor(feature.properties.created_at)
});
},
onEachFeature: function(feature, layer) {
layer.bindPopup(
  feature.properties.created_at + '<br />'
  + feature.geometry.coordinates + '<br />'
  + feature.properties.user  )
}
});

大多数数据是多边形,但是我需要将它们转换为点(多边形中心)以简化地图。我不想在解析原始GeoJSON时更改它,因为以后可能需要这些多边形。

我不知道在哪里“注入”代码以读取多边形边界,计算中心并发送latlng来制作圆形标记。现在,代码读取json ok中的点和多边形,但是数据中的多边形太多,因此浏览器冻结。当我从JSON过滤掉polys并映射点时,它可以正常工作。我的想法不多了,在JSON章节中,Leaflet文档非常稀缺...我只需要一种方法即可将if放入pointToLayer代码中,将点与多边形分离,并将它们全部映射为点。

提前致谢!

有任何想法吗?

卡坦

似乎没有合适的挂钩。

乍一看,您似乎可以对传递给style选项功能的GeoJSON进行突变,但是Leaflet在该阶段已经创建了自己的要素/图层,因此任何突变都无效。

要解决该问题,您可以执行自己的网络请求并修改数据,然后再将其传递到GeoJSON层。

如果您定位的是现代浏览器,则可以使用fetch或其中之一的polyfill:

fetch('/UrbanSyntax/Desarrollo/twitter/data/boxtest.json')
.then(function (response) {
    return response.json();
})
.then(function (geoJson) {
  geoJson.features.forEach(function (feature) {
    if (feature.geometry.type === "Polygon") {
      // Copy the polygon geometry and replace it with a
      // point at the polygon's centroid.
      feature.polygonGeometry = feature.geometry;
      feature.geometry = {
        coordinates: getCentroid(feature.polygonGeometry),
        type: "Point"
      };
    }
  });
  geoJsonLayer = new L.GeoJSON(geoJson, {
    pointToLayer: function(feature, latlng) {      
      return new L.CircleMarker(latlng, {
        radius: 3,
        fillOpacity: 0.75,
        color: getColor(feature.properties.created_at)
      });
    },
    onEachFeature: function(feature, layer) {
      layer.bindPopup(
        feature.properties.created_at + '<br />'
        + feature.geometry.coordinates + '<br />'
        + feature.properties.user);
    }
  });
  geoJsonLayer.addTo(map);
});

getCentroid确定质心/中心或您要使用的任何内容的功能在哪里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

传单地图中的多边形叠加

将Geopandas形状多边形转换为geojson

如何将geojson转换为匀称的多边形?

自更新以来,多边形未在传单R地图中绘制

使用 query-overpass 和 turf.js 将 geojson 多边形转换为带有节点的点

无法在Google地图中绘制多边形

使用JavaScript在Google地图中绘制多边形

将多边形转换为路径

Google地图:我可以将多边形转换为多边形的图形管理器吗?

R /传单-绘制大量多边形

在Rails中将PostGIS多边形转换为GeoJSON

使用不同的投影将OpenLayers多边形转换为GeoJSON

将 lat lon 字符串转换为 geojson 多边形

如何将坐标对从字符串转换为谷歌地图多边形的数组?

将点连接到平面/绘制多边形

添加带有地图框的geojson文件并在地图中创建多边形

将 CSV 文件转换为 shapefile - 但想要多边形而不是点

函数令人惊讶地更改了传单地图中的多边形坐标

如何在shinyR中创建一个按钮,其事件与传单地图中的多边形绘制工具栏相同

将信息框添加到使用Google地图中的图形管理器绘制的多边形吗?

在OpenLayers地图中显示多边形

在Google地图上绘制多边形

可以将单个多边形转换为多多边形吗?

如何将 wkt 形式的多边形列表转换为多多边形?

如何将匀称的多边形转换为多边形

从多边形的侧面绘制等距点

排序多边形的点以进行绘制

传单(geojson)多边形上的简单标签

传单-geoJSON多多边形-具有bindTooltip的bindPopup