2015-07-20 87 views
2

我試圖在使用OpenLayers 3的開放式街道地圖上繪製一些簡單的形狀(主要是線條)。我使用的代碼幾乎直接從其網站上的example複製而來,但它似乎不適合我。OpenLayers無法在地圖上繪製geoJSON

var vectorSource = new ol.source.Vector({ 
    features: (new ol.format.GeoJSON()).readFeatures(arr[i].geoJSON) 
}); 

var vectorLayer = new ol.layer.Vector({ 
    source: vectorSource, 
    style: styleFunction 
}); 

map.addLayer(vectorLayer); 

styleFunction是相同的功能在該示例中,和arr[i].geoJSON是完全有效的GeoJSON的對象。

問題是,它沒有畫任何東西。我究竟做錯了什麼?

+1

看起來你需要創建的jsfiddle展示,讓其他人來調查問題。 – kryger

+0

不要忘記您的geojson上的座標必須在EPSG:3857中,並且此投影必須在您的json中定義,如示例中所示。否則,您可以指定格式對象中的選項來重新投影數據,請參閱api:http://openlayers.org/en/master/apidoc/ol.format.GeoJSON.html – oterral

回答

1

您可能需要提供readFeatures方法的選項。 GeoJSON的投影一般採用4326,而大多數網絡地圖一般都在3857

嘗試致電:

(new ol.format.GeoJSON()).readFeatures(arr[i].geoJSON,{ 
    featureProjection:"EPSG:3857" 
});