2013-12-18 38 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