Vue+Openlayer をベースに geojson を動的に読み込む方法

Vue+Openlayer をベースに geojson を動的に読み込む方法

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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue で JsonView を使用して Json ツリーを表示するサンプルコード
  • Vue でのクロスドメイン リクエスト インターフェース操作に jsonp を使用する
  • Vue3.0 の json 読み込み方法 (非 ajax)
  • VueでJSONを使用してインターフェースを更新してもカウントダウンには影響しません
  • vue で jsonp プラグインを使用する例
  • JSONを使用してVueを共有する最も簡単な方法2つ

<<:  MySQL テーブルにおける非主キー列オーバーフロー監視の詳細な説明

>>:  DockerでJavaプログラムを起動する方法

推薦する

フロントエンドHTMLスキン変更機能の実装コード

透明を含む5つの肌の色を変更するには50行のコードが必要です最初にコードをお渡ししますので、ご自身で...

Windows での MySQL 8.0.15 のインストールと設定方法のグラフィック チュートリアル

この記事では、参考までにMySQL 8.0.15のインストールと設定方法のグラフィックチュートリアル...

MySQL 8.0.17 のインストールと使用方法のチュートリアル図

前面に書かれた過去および現在のプロジェクトで最も一般的に使用されているリレーショナル データベースは...

MySQLはカバーインデックスを使用してテーブルリターンを回避し、クエリを最適化します。

序文カバーリング インデックスについて説明する前に、まずそのデータ構造である B+ ツリーを理解する...

MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要

1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...

docker-compose で Jenkins をインストールする際の実践的なメモ

ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...

MySQLカスタム関数とストアドプロシージャの詳細な説明

序文この記事では主にMySQLのカスタム関数とストアドプロシージャに関する関連コンテンツを紹介し、皆...

廃止された Docker は Podman に置き換えられますか?

Kubernetes チームは最近、最新バージョンの Docker でサポートされている機能を廃止...

jsプロジェクトでの双方向データバインディングの簡単な実装方法

目次序文パブリッシュ・サブスクライバ・パターン結果電話要約する序文双方向データ バインディングとは、...

MySQL ページングクエリ最適化テクニック

ページング クエリを使用するアプリケーションでは、LIMIT と OFFSET を含むクエリが非常に...

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...

MySQL 5.7.17 無料インストールバージョンの設定方法グラフィックチュートリアル (Windows10)

1. 概要ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージ...

Element PlusはAffixを実装します

目次1. コンポーネントの紹介2. ソースコード分析2.1 テンプレート2.2 スクリプト2.3 実...

MySQLがウィンドウ関数で合計関数を実行するときに発生する可能性のあるバグ

MySql のウィンドウ関数を使用して統計データを収集する際に、小さな問題が見つかったので、それにつ...

mysqlはタイムゾーン関連の問題を解決します

序文: MySQL を使用すると、時間の表示が正しくない、タイムゾーンが GMT+8 ゾーンにない、...