当前位置: 首页 > 知识库问答 >
问题:

为leaftlet组合geojson和json

司空默
2023-03-14

我有一张带有GeoJson图层的传单地图

    var objJson = "https://raw.githubusercontent.com/salucci/Leaflet-Teste/master/BrasilNovo.json";
geojsonLayer = new L.GeoJSON.AJAX(objJson, { style: style, 
    onEachFeature: onEachFeature});
    geojsonLayer.addTo(map);
    info.addTo(map);

并且还有一个从本地PHP服务器接收Json数据的Ajax请求。

$.ajax({
    url: "http://127.0.0.1/projects/phpController.php",
    type: "POST",
    dataType: "json",
    data: {"Codigo": 1100023},
    success: function(data){
        console.log(data); //here is my data
    },
    error: function(error){
         console.log("Error:");
         console.log(error);
    }
});

GeoJson有点重,所以我不想每次都在服务器上生成完整的GeoJson,我的想法是在Ajax请求后通过ID(类似SQL join)合并静态GeoJson和动态Json,然后将合并的对象放在传单层上

GeoJson看起来像:

{"type":"FeatureCollection","features":[
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-73,-7],[-73,-8]]]},"properties":{"field1":"value1","field2":"value2","ID":"1"}},
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-73,-7],[-73,-9]]]},"properties":{"field1":"value1","field2":"value2","ID":"2"}},
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-73,-7],[-73,-11]]]},"properties":{"field1":"value1","field2":"value2","ID":"3"}}]}

来自Ajax请求的Json如下所示:

[{"id":"1","field3":"value3","field4":"value4"},{"id":"2","field3":"value3","field4":"value4"},{"id":"3","field3":"value3","field4":"value4"}]

所以基本上,我想把字段field 3和字段4及其值放入GeoJson属性中,并通过id连接。什么是最好的/最快的方式来执行使用javascript?

有没有办法在以后的运行时合并另一个(第三个)Json?

共有1个答案

冀耀
2023-03-14

当传单解析GeoJSON数据并从中构建GeoJSON图层组(存储在geojsonLayer变量中)时,它会将要素数据记录到每个相应图层的feature属性中。

例如,在您的geojsonLayer中,您将得到一个多边形,其中包括:(以下称为“”)

layer.feature.type // "Feature"
layer.feature.geometry // {"type":"Polygon","coordinates":[[[-73,-7],[-73,-8]]]}
layer.feature.properties // {"field1":"value1","field2":"value2","ID":"1"}

例如,你可以这样做:

geojsonLayer.eachLayer(function (layer) {
  if (layer.feature.properties.ID === jsonObj.id) {
    for (var key in jsonObj) {
      layer.feature.properties[key] = jsonObj[key];
    }
  }
});

当然,您可以改进算法以缓存对传单层的引用,而不必每次都循环使用geojsonLayer

 类似资料:
  • GeoJSON 是一个编码各种地理数据结构的格式。一个GeoJSON对象可以代表一个几何,一个特性,或一组特性。GeoJSON 支持以下几何类型: 点,LineString,多边形,多点,MultiLineString,多个多边形,GeometryCollection。GeoJSON(包含一 个几何特征对象和额外的属性和特性集合代表一个列表的功能。

  • 我在ID号中包含姓名数据以及许多关联值。它看起来像这样: 我想创建名称的所有组合,不管有多少个,并将它们粘贴在一起,用逗号分隔,并在每个id中求其编号和值的总和。上述示例的预期输出为: 谢谢大家!

  • 我有以下损坏的docker compose文件 此操作失败,并显示以下错误 问题1:如何在中合并数组?我尝试使用的语法是用于合并字典的语法 问题2:如果没有办法合并数组,有没有变通方法? 用例:我有多个服务,其中一些映射一些卷,另一些映射其他卷,另一些映射所有卷。我不想重复我自己。 谢谢你!

  • 我有: 和: 我不喜欢的是手动将从放入:。 对于正文为的POST请求,如何在中自动设置,以便您获得如下所示的? 基本上,我想要这样的东西: 有没有办法做到这一点? 谢谢你!:) 编辑:这是一个老问题,仍然没有答案,所以我想为这个问题添加新的视角。 我们遇到的另一个问题是验证,即基于某个字段和进行验证的特定定义的自定义约束。 如果我们从请求体中删除,那么我们如何从自定义约束中访问它呢?:)

  • 我开始研究 OOAD,我很难找到一个 代码示例来说明如何以编程方式实现、和。(到处都有几篇文章,但它们与 C# 或 Java 有关)。我确实找到了一两个例子,但它们都与我的导师的指示相冲突,我很困惑。 我的理解是,在: < li >关联:Foo有一个指向Bar对象的指针作为数据成员 < li >聚合:Foo有一个指向Bar对象的指针,Bar的数据被深度复制到该指针中。 < li >组成:Foo有一

  • 有没有办法在python中合并两个重叠的GEOJSON多边形,返回一个合并的GEOJSON对象?