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 テーブルにおける非主キー列オーバーフロー監視の詳細な説明
透明を含む5つの肌の色を変更するには50行のコードが必要です最初にコードをお渡ししますので、ご自身で...
この記事では、参考までにMySQL 8.0.15のインストールと設定方法のグラフィックチュートリアル...
前面に書かれた過去および現在のプロジェクトで最も一般的に使用されているリレーショナル データベースは...
序文カバーリング インデックスについて説明する前に、まずそのデータ構造である B+ ツリーを理解する...
1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...
ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...
序文この記事では主にMySQLのカスタム関数とストアドプロシージャに関する関連コンテンツを紹介し、皆...
Kubernetes チームは最近、最新バージョンの Docker でサポートされている機能を廃止...
目次序文パブリッシュ・サブスクライバ・パターン結果電話要約する序文双方向データ バインディングとは、...
ページング クエリを使用するアプリケーションでは、LIMIT と OFFSET を含むクエリが非常に...
公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...
1. 概要ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージ...
目次1. コンポーネントの紹介2. ソースコード分析2.1 テンプレート2.2 スクリプト2.3 実...
MySql のウィンドウ関数を使用して統計データを収集する際に、小さな問題が見つかったので、それにつ...
序文: MySQL を使用すると、時間の表示が正しくない、タイムゾーンが GMT+8 ゾーンにない、...