2017-06-15 11 views
0

は、このようなopenlayer 3でKMLベクトルを追加する方法はありますが、KMLは、変数OpenLayersを文字列を使用してKMLを追加する方法を3変数

var vector = new ol.layer.Vector({ 
      source: new ol.source.Vector({ 
       url: 'https://openlayers.org/en/v4.2.0/examples/data/kml/2012-02-10.kml', 
       format: new ol.format.KML() 
      }) 
      }); 

文字列からですトン事前

答えて

0

var kmlString = result; 
       var features = new ol.format.KML().readFeatures(kmlString); 

       var KMLvectorSource = new ol.source.Vector({ 
        features: features 
       }); 


       var KMLvector = new ol.layer.Vector({ source: KMLvectorSource }); 

       //KMLvector.addFeatures(features); 
       map.addLayer(KMLvector); 

おかげで働くあなたのKML機能の投影の定義と変換が欠落しています。 https://openlayers.org/en/v4.2.0/examples/data/kml/2012-02-10.kmlのkml機能はEPSG:4326に投影され、地図はEPSG:3857に投影されます。 kmlは4326に投影されるのが普通です。そのため、ほとんどの場合、kmlのEPSGコードは4326です。

今問題に戻ります。この行を変更します。

これに

var features = new ol.format.KML().readFeatures(kmlString);

var features = new ol.format.KML().readFeatures(kmlString,{ dataProjection:'EPSG:4326', featureProjection:'EPSG:3857' });

+0

ところで、私はOpenLayersをからKMLを使用してはいけません。私は3857で投影された文字列を含む文字列変数を持っています。私はすでにそのコードを試しましたが、エラーはありませんが、kmlレイヤーは表示されません – gray

+0

文字列に渡す以外のデータベースからkmlをロードする方法はありますか? – gray

+0

あなたの質問は、文字列から。私たちが時間を無駄にしないように、あなたが本当に望んでいるものをより良く決定する。 – pavlos

関連する問題