2016-05-17 8 views
0

: 私はここからにGeoJSONデータを取得:http://polygons.openstreetmap.fr/get_geojson.py?id=1320234&params=0純粋なGeoJSONデータでリーフレットピッププラグインを使用するには?私はリーフレット-ピップを使用して問題がある

がどのように私はそのようなデータでleafletPip.pointInLayerを呼び出す必要がありますか? 私はいくつかの試みをしていますが、空の配列を返しますが、これらのレイヤー内にマーカーがいくつかあることがわかります。

答えて

0

Leaflet-PIPは、L.GeoJSONグループが第2引数として渡される必要があることに注意してください。あなたのGeoJSONデータ(L.geoJson(myGeoJSONdata))からビルドするのは簡単です。実際には、ちょうどL.LayerGroupが必要です。

次に、Leaflet-PIPはネストされたレイヤーグループを処理していないようです。

データはMultiPolygonsで作成され、リーフレットはL.GeoJSONグループ内のL.Polygonのグループに変換されます。したがってリーフレット-PIPはそれらを処理しません。

Leaflet-PIPで正しく使用するには、グループを「平坦化」する必要があります。グループを解析して、グループ以外のすべてのレイヤーを別のグループに抽出します。

var gjLayer = L.geoJson(myGeoJSONdata).addTo(map); 

var groupOfNonGroup = L.layerGroup(); 

function copyToGroupOfNonGroup(group) { 
    group.eachLayer(function (layer) { 
    if (layer instanceof L.LayerGroup) { 
     copyToGroupOfNonGroup(layer); 
    } else { 
     layer.addTo(groupOfNonGroup); 
    } 
    }); 
} 

copyToGroupOfNonGroup(gjLayer); 

var results = leafletPip.pointInLayer([lng, lat], groupOfNonGroup); 

デモ:https://plnkr.co/edit/6hRKHHtvWOVdWg4jZ8AJ?p=preview

+0

私は作業リンクにリーフレット-PIPを更新したが、これはもう動作するようには思えない、結果の配列が空であるhttp://plnkr.co/edit/ WtLDY9eL6ZpBUdeV8VQm – Sam

+0

@Samは頭をアップしてくれてありがとう。私はリーフレットピップとリーフレットに新しいCDNを使用するようにデモを更新しましたが、それでも0.7.7です。リーフレット1.0のためにリーフレットピップに何が変わったのか分かりませんか? – ghybs

+0

Polygonクラスが 'draw:created'引数でどのようにタイプされているかの変更により、チラシ1.0のようなものはpip(まだ?)でサポートされていません(e.layerはもう同じシグネチャではありません)... shame :( – Sam

関連する問題