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プログラムを起動する方法

推薦する

ワンクリックで雨や雪のエフェクトを実現する ThingJS パーティクルエフェクト

目次1. パーティクルエフェクト2. シーンを読み込む3. さまざまな粒子効果の実現エンディング: ...

操作タイムアウトがないときにMySQLサーバーがアクティブに切断される問題を解決します

MySQL サービスを使用する場合、通常の状況では、MySQL のタイムアウト設定は 8 時間 (2...

Linux システムコマンドのメモ

この記事では、Linux システム コマンドについて説明します。ご参考までに、詳細は以下の通りです。...

MySQL のマスター スレーブ レプリケーション オプションをオンラインで変更する方法

序文: MySQL で最も一般的に使用されるアーキテクチャは、マスター スレーブ レプリケーションで...

Linux の非常に詳細な gcc アップグレード プロセス

目次序文1. 現在のgccバージョン2. gccをインストールする3.gmpのインストール4.MPF...

Winows Server 2019 アクティベーション コードとボリューム ライセンス エディション KMS インストール キー GVLK

最近、社内文書の整理とファイルサーバーの構成を予定しています。以前はサーバー2003を使い慣れていま...

ubuntu15.10 での hadoop2.7.2 の詳細なインストールと設定

Linux での Hadoop インストール チュートリアルはインターネットや書籍に多数ありますが、...

nginx-ingress-controller ログ永続化ソリューションのソリューション

最近、nginx-ingress-controller のアプリケーションについて説明した公開アカウ...

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

MySQL_8.0.2のオフラインインストール方法は参考までに。具体的な内容は以下のとおりです。次の...

MySQLデータベースの追加、削除、変更操作の詳細な説明

データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...

Vueがsweetalert2プロンプトコンポーネントを統合する際の問題についてお話ししましょう

目次1. プロジェクト統合1. CDNインポート方法: 2. 箱の梱包を確認する3. 迅速な箱詰め4...

リアルタイムクロックを実装するネイティブJS

ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...

LinuxにMySQLをインストールし、外部ネットワークアクセスを構成する例

設定手順1. DNSが設定されているかどうかを確認するDNSが設定されていない場合は、前の記事を参照...

Webデザイン: タイトルが完全に表示できない場合

<br />今日、新しくなった ChinaUI.com の Web サイトを見たのですが...

MySQL 匿名ログインでデータベースを作成できない問題の解決方法

よくある質問ユーザー ''@'localhost' によるデータベー...