2017-10-10 3 views
0

私はGeoJSONレイヤを非同期的に作成しているマップ上のデータに基づいていますJSON API最初のデータロードが機能し、GeoJSONオブジェクトを見ると、追加された要素が追加されているようです。しかしMap.getSource(...)。setData(...)を呼び出すと、タイプエラーが発生します。未定義のプロパティ 'length'を読み取ることができません。

、私はその後、map.getSource(...)を呼び出すようにしよう。のsetData(...)同じソース(更新にGeoJSONオブジェクトをポイントするためのデータ要素)で、私は

を取得します

エラー:例外TypeError:Actor.receiveで未定義 のプロパティ「長さ」を読み込めません(actor.js:77)

私はオンラインで見つけることができる唯一の参照がもはや存在しないスタイルでのsetDataを呼び出そうとに関連していますGeoJSONデータが無効ですが、そうではないようです。

> map.getSource("advertisers"); 
e {id: "advertisers", type: "geojson", minzoom: 0, maxzoom: 18, tileSize: 512, …} 
> features; 
(7634) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, …] 
> features[0]; 
{type: "Feature", geometry: {…}, properties: {…}} 
> features[0].geometry; 
{type: "Point", coordinates: Array(2)} 
> map.getSource("advertisers").setData(features); 
e {id: "advertisers", type: "geojson", minzoom: 0, maxzoom: 18, tileSize: 512, …} 
evented.js:111 Error: TypeError: Cannot read property 'length' of undefined 
at Actor.receive (actor.js:77) 

ご了承ください。

答えて

2

フィーチャーの配列をsetData()に渡しているようですが、有効なGeoJSONオブジェクトを渡す必要があります。

あなたは交換する必要があります。map.getSource("advertisers").setData(features);

で:

map.getSource("advertisers").setData({ 
    type: 'FeatureCollection', 
    features: features 
}); 
+0

*手のひらを顔に当てる*おかげで、私はあまりにも長い間、同じコードを見つめてきたと思います。それがそれでした。 –

関連する問題