【问题标题】:Coordinate Reflection issue with Leaflet传单的坐标反射问题
【发布时间】:2013-12-19 02:04:53
【问题描述】:

祝大家节日快乐。 在尝试使用 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]
    ]);

现在,两者都在各自的上下文中工作。我只是想知道为什么必须反映 L.polygon() 中的坐标矩阵,以便在像这样传递给 L.goeJson() 时显示人们期望的位置:

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

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

非常感谢大家。

【问题讨论】:

    标签: javascript json leaflet


    【解决方案1】:

    创建 geoJson 图层时,坐标应符合 GeoJSON 标准(x、y、z 或 lng、纬度、高度)(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());
    

    【讨论】:

    • 我明白你要做什么,但这种语法似乎不起作用。我收到此错误:polygons.toGeoJSON 不是函数。我尝试了一些方法,例如: var gg = L.toGeoJson(polygons);无济于事。不过感谢您的尝试。
    • 您是否检查过您的 JS 是否有任何错误,以及您是否使用的是最新版本的 Leaflet?只要将多边形实例化为 L.polygon,您就可以访问toGeoJSON 方法。 Here's a gif I made in Chrome's console illustrating 如何将 L.polygon 对象转换为 L.geoJson 对象。
    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多