問題タブ [mapbox-gl-js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1844 参照

javascript - mapbox gl をクリックして機能を強調表示する

マウスオーバーすると強調表示される通りの geojson レイヤーがあります。

私の目的は、クリックイベントで個々の道路を赤く強調することです。一度にハイライト表示できるのは 1 つの通りのみであり、別のストリートがクリックされるまでハイライト表示されたままにする必要があります。

次のコードに何を追加する必要があるかについて何か考えはありますか?

0 投票する
0 に答える
640 参照

javascript - モバイルでの Mapbox GL JS ライン レイヤーのレンダリングの問題

ベクター タイル データを MapBox protobuf 形式で提供するローカル ベクター タイル サービスをセットアップしました。また、Mapbox GL JS を使用してベクター タイル データを表示する単純な JS クライアントも作成しました。

私のデスクトップ ブラウザでは、すべてが正常にレンダリングされます。ただし、モバイル ブラウザー (さまざまなデバイス) でクライアント アプリを開くと、一部のブラウザーでレンダリングの問題が発生します。ライン レイヤーの z レベルに問題があるようです (下部に添付された画面)。

簡単にするために、protobuf タイルのみを表示するコードを投稿し、タイルの境界線、水平線、および垂直線に線を付けます。「実際の」マップ データと同じように、問題は引き続き発生します。

問題はブラウザ固有ではありません。それは、Xiaomi Redmi Note2 と、非常に高い画面解像度を持つ一部の Samsung の 2 台の携帯電話のモバイル chrome と Firefox の両方で発見されました。Chrome 搭載の Xperia Z1 では、レンダリングは問題ありませんでした。デスクトップブラウザでのレンダリングは問題ありません。

もう 1 つ - MapBox の例のページからベクター タイルの例を確認したところ、どこでも問題なくレンダリングされました。

質問:

MapBox protobuf / GL JS lib の経験がある人なら、何が問題なのかわかるでしょうか? たぶん、スタイルにいくつかの設定がありません... または、GL JS ライブラリには、供給されているベクター タイル pbf データに対して明らかではない要件がありますか?

クライアント アプリ コード:

pbf コンテンツを生成する Java クラス:

スクリーンショット:

デスクトップブラウザ - すべて問題ありません:

デスクトップブラウザ - すべて問題ありません

モバイル ブラウザ - 行が消える:

モバイル ブラウザ - 行が消える

0 投票する
1 に答える
151 参照

mapbox-gl-js - フィルタ後にマップに表示されるフィーチャの数を取得します (featuresIn を使用)

まず第一に、私はそれquerySourceFeaturesを修正できることを知っています。残念ながら、新しいバージョンはすべてのタイプで有効ですが、私が使用しているシンボルでは有効ではありません。そのため、私はまだバージョン 0.14.x でコーディングしています。

とはいえ、関数を使用してマップをフィルター処理しsetFilter、フィルター処理が完了したら、表示されるフィーチャの数を取り戻す必要があります。全世界(-90、-180、90、180)のマップ座標をピクセルに変換してから、関数に渡すことを考えましたfeaturesIn

以下のフィドルでは、featuresIn は何も返しません [編集: 設定されていないことが原因でしたinteracive : true。現在は完了していますが、問題はまだここにあります]。マップに表示されるフィーチャの数を取得する方法はありますか?

編集:私のjsFiddleを見つけてください: https://jsfiddle.net/y7hoa0gy/7/

0 投票する
2 に答える
3814 参照

mapbox-gl-js - mapbox-gl-js でフィルターを使用して機能を表示/非表示にする

mapbox を使用して屋内プロジェクトに取り組んでおり、特定のプロパティで機能 (フロア) を表示/非表示にする方法を探していますlevel=x。mapboxjs の最初のバージョンでは、これを使用することができまし。GLバージョンでは、フィルターを使用してレイヤーを簡単に表示/非表示にできますが、レイヤーが既に定義されており(部屋、廊下、階段...)、床に依存していないため、これは私が目指しているものではありません:

使用したい機能を照会できます。

しかし、返された機能を表示/非表示にする方法が見つかりませんでした。

情報: IndoorSource は Web サーバーからのベクター タイルです。

前もって感謝します、

ティボー

0 投票する
1 に答える
248 参照

angularjs - 新しいマップ インスタンスの作成後に Mapboxgl setSyle undefined

mapboxgl.Map私の単体テストでは、メソッドの新しいインスタンスを作成した後、場合によってmap.setStyleは未定義です。単体テストは、angular 1.5 + karma jasmine を実行しています。最新バージョンの mapboxgl を使用しています。

ディレクティブ内でマップを作成する場合は、次のようにmap.setStyle定義されます。

テストで作成する場合、map.setStyle定義されていません。例:

2 番目のインスタンスは機能しているはずですが、失敗する理由はありますか?