2016-07-26 16 views
0

KMLファイルをリーフレットに読み込み、リーフレット描画用に編集できるようにしようとしています。私はリーフレット - omnivoreを使用してKMLをインポートしています。リーフレット描画のdrawItemsにKMLファイルを追加

<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js'></script> 
var kmlFile = omnivore.kml('Point.kml') 

私はそれが完璧に動作マッピングするためにkmlFileを追加しますが、形を作るために、私は、私はエラーメッセージを取得しかしdrawnItems

var drawnItems = new L.FeatureGroup(); 
omnivore.kml('Point.kml').addTo(drawnItems); 

にレイヤーを追加する必要が編集可能な場合:

TypeError: i.editing is undefined.

レイヤー座標にアクセスしようとすると、オブジェクトを自分で作成し、それらをdrawnItemsに追加すると、オブジェクト座標にアクセスする方法が見つからないため、そうすることはできません。

私は、彼らが

console.dir(omnivore.kml('Point.kml').getLayers()); 

空の見えるしかし、私は、私は_layersオブジェクトと座標が含まれていることを見ることができ雑食動物のkmlオブジェクトを検査する際層にアクセスしてみてください。

しかし、getLayersメソッドを実行すると、レイヤー配列は空に見えます。

提案がありますか?

答えて

1

それはそれらを解析し、リーフレット層を作成することができます前に、ファイルをダウンロードする必要があるためLeaflet omnivoreプラグインは、非同期方法を提供することに注意してください。

JavaScriptで非同期タスクの詳細については、を参照してください。How do I return the response from an asynchronous call?あなたはすぐにそれを読んしようとすると、あなたのレイヤーグループが空に見える理由です

データが正しくダウンロードされ、リーフレットレイヤーに変換された後に操作を実行する必要がある場合は、.on("ready", fn)の構文as explained in the plugin READMEを使用します。

結果グループをフィーチャグループに追加する場合(後でLeaflet.drawプラグインで使用する場合)、フィーチャグループを3rd argumentとしてomnivore.kml()と直接指定できます。

関連する問題