1つ以上の機能をロードする <テンプレート> <div id="map" style="幅: 100vw; 高さ: 100vh"></div> </テンプレート> <スクリプト> "ol/ol.css"をインポートします。 "ol/layer/Tile" から TileLayer をインポートします。 「ol/layer/Vector」から VectorLayer をインポートします。 「ol/source/Vector」から VectorSource をインポートします。 「ol/source/XYZ」からXYZをインポートします。 "ol" から { Map, View, Feature, ol } をインポートします。 "ol/style" から { Style、Stroke、Fill } をインポートします。 "ol/geom" から {Polygon、MultiPolygon } をインポートします。 「@/assets/chengdu.json」から areaGeo をインポートします。 エクスポートデフォルト{ データ() { 戻る { マップ: {}, エリアレイヤー: {}, }; }, マウント() { this.initMap(); //マップを初期化するメソッド this.addArea(areaGeo); //エリア レイヤーを追加するメソッド this.pointMove(); クリックするとフィーチャーが取得されます。 }, メソッド: { ポイント移動() { // ベクター要素上のマウスのスタイルを設定します this.map.on("pointermove", (e) => { const isHover = this.map.hasFeatureAtPixel(e.pixel); this.map.getTargetElement().style.cursor = isHover ? "ポインター" : ""; }); }, クリックによるフィーチャ取得() { this.map.on("クリック", (e) => { フィーチャを this.map.getFeaturesAtPixel(e.pixel); に設定します。 this.map.getView().fit(features[0].getGeometry(), { 期間: 1500、 パディング: [100, 100, 100, 100], }); }); }, /** * エリアを設定 */ エリアを追加します(geo = {}) { Object.keys(geo).length == 0 && geo.features.length == 0 の場合、戻り値は次のようになります。 // レイヤーを設定する this.areaLayer = new VectorLayer({ ソース: 新しい VectorSource({ 特徴: []、 })、 }); //レイヤーを追加します this.map.addLayer(this.areaLayer); features = geo.features; とします。 for (let i in 機能) { areaFeature を {} とします。 if (features[i].geometry.type == "MultiPolygon") { エリアフィーチャ = 新しいフィーチャ({ ジオメトリ: 新しい MultiPolygon(features[i].geometry.coordinates)、 }); } そうでない場合 (features[i].geometry.type == "Polygon") { エリアフィーチャ = 新しいフィーチャ({ ジオメトリ: 新しいポリゴン(features[i].geometry.coordinates)、 }); } エリアフィーチャー.setStyle() 新しいスタイル({ 塗りつぶし: 新しい塗りつぶし({ 色: "#4e98f444" }), ストローク: 新しいストローク({ 幅: 3, 色: [71, 137, 227, 1], })、 }) ); エリアフィーチャーにプロパティを設定します。 this.areaLayer.getSource().addFeature(areaFeature); } }, /** * マップを初期化する */ initMap() { this.map = 新しいマップ({ ターゲット: "マップ"、 レイヤー: 新しいタイルレイヤー({ ソース: 新しいXYZ({ URL: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}", })、 })、 ]、 ビュー: 新しいビュー({ 投影: "EPSG:4326", 中央: [103, 31], ズーム: 7, })、 }); }, }, }; </スクリプト> Vue+Openlayer が geojson を動的にロードする方法についての記事はこれで終わりです。Vue Openlayer が geojson をロードする関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL テーブルにおける非主キー列オーバーフロー監視の詳細な説明
データ型と操作データテーブル1.1 MySQL 型: 整数 1.2 MySQL データ型: 浮動小数...
7 のMicrosoft の公式 Web サイトから HTTP Rewrite モジュールをダウンロ...
今日、MySQL の無料インストール版をデプロイしたところ、テーブル 'mysql.plug...
目次アプリ.vueサブ1.vueサブ2.vue要約する vue2 における非親子コンポーネントの値の...
<input> はユーザー情報を収集するために使用され、終了ステートメントはありません。...
目次1. 環境整備2. イメージを実行する問題を解決するRedis のインストールNginx のイン...
1. CSSファイルの命名規則提案: 文字、_、-、数字を使用します。文字で始まる必要があり、純粋な...
CSS を使ってさまざまなグラフィックを実現できるのは素晴らしいことです。画像を切り取る必要はなく、...
序文最近、プロジェクトを構築しているときに、リクエストのカプセル化について考え、どのようにカプセル化...
序文WeChat アプレットでは、App.js の globalData を中間ブリッジとして使用し...
Docker には 3 つの基本概念が含まれています。イメージ: Docker イメージはルート フ...
関連記事:初心者が学ぶ HTML タグ (3)導入された HTML タグは、必ずしも XHTML 仕...
問題: vue-cil3 は、`--fix` オプションで修正できる可能性のある警告とともに実行され...
1. mysqlbinlog: [エラー] 不明な変数 'default-character...
序文このブログ記事が公開された後、何人かの友人からSQL Serverバージョンがあるかどうか尋ねら...