javascript - 与传单协调反射问题

标签 javascript json leaflet

祝大家节日快乐。 我在尝试使用 L.geoJson() 绘制多边形图层时注意到一个有趣的行为怪癖。考虑以下代码:

var polygonCoords = [
        {"type": "Feature",
        "properties": {"group": "Violations"},
        "geometry": {
            "type" : "Polygon",
            "coordinates": [[
                [-107.69348, 43.22519],
                [-105.48523, 42.99259],
                [-107.7594, 42.26105]
            ]]
       }
    }];

var polygons = L.polygon([
        [43.22519, -107.69348],
        [42.99259, -105.48523],
        [42.26105, -107.7594]
    ]);

现在,两者都在各自的上下文中工作。我只是想知道为什么必须反射(reflect) L.polygon() 中的坐标矩阵才能显示传入 L.goeJson() 时所期望的位置,如下所示:

var jsonPoly = L.geoJson(polygonCoords, {
        style: function(feature) {
            if (feature.properties.group == "Violations") {
                 return {color: "#ff0000"};
            }
        }
    });

或者这是传单中的疏忽?另外,有没有办法通过 toGeoJson(polygons) 来自动执行此反射?

非常感谢大家。

最佳答案

创建 geoJson 图层时,坐标应符合 GeoJSON 标准(x、y、z 或 lng、lat、海拔)( GeoJSON position specs )

如果您的 GeoJSON 字符串的坐标不是这种格式,您可以使用自定义 coordsToLatLng 函数创建 GeoJSON 图层,该函数将处理到标准格式的转换 ( Leaflet Doc )

如果您有一个多边形图层并希望将其添加到现有的 GeoJSON 要素组中,您可以执行以下操作:

var polygons = L.polygon([
        [43.22519, -107.69348],
        [42.99259, -105.48523],
        [42.26105, -107.7594]
    ]);
var gg = polygons.toGeoJSON();
var jsonFeatureGroup = L.geoJson().addTo(map);
jsonFeatureGroup.addData(gg);
map.fitBounds(jsonFeatureGroup.getBounds());

关于javascript - 与传单协调反射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20663604/

相关文章:

javascript - 通过键盘导航聚焦 input[type=file] 时显示浏览器的 ‘select file’ 对话框

javascript - LeafletJs GeoMan 多边形编辑

javascript - 从 CircleMarker 扩展的标记 - 如何更改点击区域?

javascript - 如何在不循环的情况下从函数参数中指定的json数组中获取key?

javascript - 找出一个数的最大因数(除了它本身)

json - 使用列值作为对象键创建 json

javascript - JavaScript 可以连接 MySQL 吗?

json - Angular - FormGroup 显示来自服务器 Rest Api 的 json 错误

maps - 使用传单js库旋转 map

javascript - 嵌套的 ng-repeat for object within an object within an object