オーストラリアのビクトリアにある特定の郊外を表すポリゴンからなるgeojsonファイルをアップロードして作成したマップボックスにベクトルタイルセットがあります。私のベクトルタイルセットには、geojsonのフィーチャプロパティに対応する3つのプロパティ(郊外、州、郵便番号)があります。マップボックスWeb GL JSタイルソースを使用したquerySourceFeatures()関数
マップボックスのWeb gl jsライブラリを使用してこれらのプロパティを正常にクエリして、正確なマップを取得することもできます。たとえば、ハイライトされたポリゴンをクリックするとポップアップが表示され、ポップアップでその郊外のプロパティ(郊外、州、郵便番号)が正しく表示されているマップが作成されています。
今、私のタイルセットのすべての機能について、自分のWebページにアクセスしたいと思います。私は基本的に地図の外にあるdiv内にリストとしてそれらのプロパティを出力したい。各郊外とそのプロパティをリストするだけです。この目的のために、MapBox Web GL JSライブラリのquerySourceFeatures関数を使用しようとしています。私は少し苦労している。
ここに私のコードです。私のマップは期待通りに表示されます。しかし、JSコンソールでは空の配列を取得しています。
はここに私のコード
var map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/mapbox/streets-v8', //stylesheet location
center: [144.96, -37.81], // starting position
zoom: 8, // starting zoom,
hash:true
});
// Add zoom and rotation controls to the map.
map.addControl(new mapboxgl.Navigation());
map.on('load', function() {
map.addSource('charlieSource', {
type: 'vector',
url: 'mapbox://charlie.962dstid'
});
map.addLayer({
"id": "charlielayer",
"type": "fill",
"source": "charlieSource",
"source-layer": "my-source-layer-name",
"layout": {},
"paint": {
"fill-color": "#00525a",
"fill-opacity": 0.5
}
});
var myFeatures = map.querySourceFeatures('charlieSource',
{
sourceLayer: 'my-source-layer-name',
// i'm confident there is data matching this filter
filter: ["==", "postcode", "3000"]
}
);
console.log(myFeatures);
});
だDOCOは私が正しくquerySourceFeatures機能を使用している場合ので、私は知らないビットの光です。私は完全なJSのnoobので、謝罪それは完全に単純な場合。
Firefoxの私のコンソールでは、ちょうど長さゼロの配列が得られます。ここからどこに行くのかわからない。
私はmapbox web gl jsライブラリのv0.18.0を使用しています。
ありがとうございました。あなたの質問に答える。郵便番号は文字列なので、それは問題ではありません。私のデータはビューポート内にあります。 sourceとsourceLayerは私の知る限り正しいです。 「ジオメトリが許容範囲を超えています」というコンソールが表示されていますが、querySourceFeatures関数を使用するかどうかに関係なく、すべてのマップでこれを取得します。 あなたはここに私の作業コードを見ることができます - http://where-we-build.pancakeapps.com/example-04.html – Charlie
私はそれがソースが読み込まれる前に関数の起動と関係があると思いますか?それを処理するための提案はありますか? ありがとうございます。あなたの助けに感謝。 – Charlie
あなたはまさに正しいです!上記の私の答えを編集しました。 –