2016-03-23 5 views
0

サービスからgeoJson形式の機能をダウンロードし、その機能をマップ上の新しいレイヤーに追加します。私は機能をダウンロードすることができます大丈夫、私はどのようにダウンロード後にマップにそれらを追加するつもりです。 何かの理由でダウンロードが失敗した場合に機能をダウンロードするかどうかをより詳細に制御したいので、私が見つけることができるすべての例に示すように、OLがファイルをURLから直接読み取らせることはできません。 私はこの(データは私にGeoJSONのれるFeatureCollectionが含まれています)しようとしている:これはどこかオールライブラリの内部エラーが発生しダウンロード後にgeoJsonファイルのコンテンツをベクターレイヤに追加

var nwLayer = new ol.layer.Vector({ 
    title: 'My Title', 
    source: new ol.source.Vector({ 
     features: data.features, 
     format: new ol.format.GeoJSON() 
    }), 
    style: new ol.style.Style({ 
     image: new ol.style.Circle({ 
      radius: 7, 
      fill: new ol.style.Fill({ color: "yellow" }) 
     }) 
    }) 
}); 
map.addLayer(nwLayer); 

を、明らかにオール機能タイプはにGeoJSON機能と同じではありません、それはのgetIdが必要です() 関数。 私はまた、全体としてのデータを追加しようとしました:

features: data, 

これはまったくの視覚効果がありません。 どうすればいいですか?

答えて

2

正しいですが、OpenLayerの機能はGeoJSON機能オブジェクトではありません。 GeoJSONをOpenLayers機能に変換するには、readFeaturesメソッドをol.format.GeoJSONとします。あなたの例のコードの残りの部分と

var nwLayer = new ol.layer.Vector({ 
    title: 'My Title', 
    source: new ol.source.Vector({ 
     features: (new ol.format.GeoJSON()).readFeatures(data) 
    }), 
    style: new ol.style.Style({ 
     image: new ol.style.Circle({ 
      radius: 7, 
      fill: new ol.style.Fill({ color: "yellow" }) 
     }) 
    }) 
}); 
map.addLayer(nwLayer); 
+0

グレート、ありがとう。私はVector Layer名前空間でこのような関数を探していましたが、GeoJson形式の名前空間で見つけられませんでした。 OLの方が新しくなっているので、図書館やドキュメンテーションの程度に少しは圧倒されます。 データ自体に別の問題があったため、もう少し時間がかかりました。 –

関連する問題