2017-12-13 19 views
0

mapbox-glとリーフレットのマップを作成しましたが、プラグインのリーフレットを使ってレイヤーを追加したり編集したりしようとしています。リーフレット地図を描き、保存したデータをインポートするエラー

プラグインはうまく動作します。 geojsonを使ってパス(ポリライン)を作成して保存することができます。私が保存されたデータを含む地図をリロードするとき

私はエラーを得た:

TypeError: dataLayer.push is not a function 
TypeError: a.slice is not a function 

plylineは、マップ上にあるが、私はそれを編集しようとした場合(ポリライン変更色(「編集層」ボタンをクリック)これは選択されたことを意味します)、アンカーポイントは表示されず、ドラッグまたは編集することはできません。

dataLayerは、新しいデータを含めて作成したレイヤーです。

JSONデータはhttp://geojson.io/#map=19/44.93382/9.67409で検証されています。

私はdataLayerを正しく作成していないと思います。

// ADD data stored in DB 
    var geojson = { 
    "type": "FeatureCollection", 
    "features": [ 
    { 
     "type": "Feature", 
     "properties": {}, 
     "geometry": { 
     "type": "LineString", 
     "coordinates": [ 
      [ 
      9.67420756816864, 
      44.93391475147485 
      ], 
      [ 
      9.674186110496521, 
      44.93359955072641 
      ] 
     ] 
     } 
    }, 
    { 
     "type": "Feature", 
     "properties": {}, 
     "geometry": { 
     "type": "Point", 
     "coordinates": [ 
      9.67420756816864, 
      44.933929941828694 
     ] 
     } 
    } 
    ] 
}; 

    var dataLayer = L.geoJson(geojson); 

    // featureGroup is the layer editable 
    var featureGroup = L.featureGroup(); 

    // add data from DB to editable layer 
    dataLayer.addTo(featureGroup); 

    // add editable layer to the Map 
    featureGroup.addTo(map); 

私のコードで何が問題になっていますか?

答えて

0

Geojson標準には余分なフィーチャが含まれていないため、パスのみがあり、アンカーポイント(四角形)などの余分なアイテムはありません。それを解決するには、コードを次のように修正する必要があります。

// featureGroup is the layer editable 
    var featureGroup = L.featureGroup(); 
    featureGroup.addTo(map); 


    L.geoJson(geojson, { 
     onEachFeature: function (feature, layer) { 
      if (layer.getLayers) { 
       layer.getLayers().forEach(function (l) { 
        featureGroup.addLayer(l); 
       }) 
      } else { 
       featureGroup.addLayer(layer); 
      } 
     } 
    }); 
関連する問題