2013-12-18 36 views
2

所有节日祝福和节日快乐。 我注意到一个有趣的行为怪癖,同时试图用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"}; 
      } 
     } 
    }); 

或者是这个小册子中的疏忽?另外,有没有办法使GeoJson(多边形)的自动化反射?

非常感谢。

回答

4

当创建一个以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()); 
+0

我明白你要做什么,但是这个语法似乎不起作用。我得到这个错误:polygons.toGeoJSON不是一个函数。我尝试了一些东西,如:var gg = L.toGeoJson(polygons);无济于事。尽管如此,谢谢你的尝试。 –

+1

您是否检查过您的JS是否有任何错误,以及您是否使用最新版本的Leaflet?只要多边形实例化为L.polygon,就可以访问'toGeoJSON'方法。 [这是我在Chrome的控制台中演示的gif](https://f.cloud.github.com/assets/1578563/1777916/d2c43f00-682c-11e3-8bc6-b13ae4378934.gif)如何将L.polygon对象到一个L.geoJson对象。 – geraldarthur