VUE + OPENLAYERSがリアルタイムポジショニング機能を実現

VUE + OPENLAYERSがリアルタイムポジショニング機能を実現

序文

このシリーズの記事では、主に次の内容を含む、シンプルなリアルタイム ポジショニングの例を紹介します。

  • サービス バックエンドは Java で記述されており、GeoJSON データの生成をシミュレートします。
  • フロントエンドの表示では、Vue + OpenLayers が使用され、バックエンド サービスから GeoJSON データを定期的に要求し、位置データをタグの形式で表示します。

達成された効果:

ここに画像の説明を挿入

1. ラベルスタイルを定義する

	var image = 新しいCircleStyle({
	  半径: 5,
	  塗りつぶし: 新しい塗りつぶし({
	    色: "rgba(255, 0, 0, 1)"
	  })、
	  ストローク: 新しいストローク({ 色: "赤", 幅: 1 })
	});
	
	var スタイル = {
	  ポイント: 新しいスタイル({
	    画像: 画像
	  })
	};
	
	var styleFunction = function(feature) {
	  スタイル[feature.getGeometry().getType()]を返します。
	};

2. GeoJSONデータのシミュレーション

	var geojsonObject = {
	  タイプ: "FeatureCollection",
	  特徴: [
	    {
	      タイプ: "機能",
	      ジオメトリ:
	        タイプ: "ポイント"、
	        座標: [0, 0]
	      }
	    }
	    //ここにさらに機能を追加できます
	  ]
	};

3. VerctorLayerを作成する

	// GeoJSON を読み取り、vectorSource のデータソースとして使用します var vectorSource = new VectorSource({
	  機能: 新しい GeoJSON().readFeatures(geojsonObject)
	});
	
	var ベクトルレイヤー = 新しいベクトルレイヤー({
	  ソース: vectorSource、
	  スタイル: スタイル関数
	});

4. マップを作成する

      マウント() {
    this.map = 新しいマップ({
      レイヤー:
        新しいタイルレイヤー({
          ソース: 新しい OSM()
        })、
        ベクトルレイヤー
      ]、
      ターゲット: "マップ"、
      ビュー: 新しいビュー({
        中心: [0, 0],
        ズーム: 2
      })
    });
	
	//スケジュールされたタスクを設定し、モバイル ラベル メソッドを呼び出します setInterval(this.translate, 500);
  },

5. リアルタイムの動きをシミュレートする

	 メソッド: {
	    翻訳する() {
	      //ラベルをトラバースして座標位置を変更するvectorSource.forEachFeature(function(f) {
	        console.log("翻訳");
	        
	        //座標の増分をランダムに生成します(ここでは座標の絶対値ではありません!!!)
	        var x = Math.random() * 1000000;
	        var y = Math.random() * 1000000;
	        f.getGeometry().translate(x, y);
	      });
	    }
	  }

要約する

上記は、シミュレートされた GeoJSON オブジェクトを通じてラベルを表示し、スケジュールされたタスクを通じてラベルの位置の変更をシミュレートする、シンプルなリアルタイム ポジショニング フロントエンドの例です。次の記事では、Java サーバーを使用して位置データを提供して、リアルタイムの測位システムを完全にシミュレートします。
vue プロジェクトで直接実行できる完全なコード:

	<テンプレート>
	  <div>
	    <span>こんにちは、マップ</span>
	    <div id="map" class="map"></div>
	  </div>
	</テンプレート>
	
	<script lang="ts">
	"ol/ol.css"をインポートします。
	「ol/format/GeoJSON」からGeoJSONをインポートします。
	「ol/Map」からマップをインポートします。
	「ol/View」からViewをインポートします。
	"ol/style" から { Circle を CircleStyle、Fill、Stroke、Style としてインポートします。
	"ol/source" から { OSM、Vector を VectorSource としてインポートします。
	"ol/layer" から { Tile を TileLayer として、Vector を VectorLayer として } をインポートします。
	
	「vue」からVueをインポートします。
	
	var image = 新しいCircleStyle({
	  半径: 5,
	  塗りつぶし: 新しい塗りつぶし({
	    色: "rgba(255, 0, 0, 1)"
	  })、
	  ストローク: 新しいストローク({ 色: "赤", 幅: 1 })
	});
	
	var スタイル = {
	  ポイント: 新しいスタイル({
	    画像: 画像
	  })
	};
	
	var styleFunction = function(feature) {
	  スタイル[feature.getGeometry().getType()]を返します。
	};
	
	var geojsonObject = {
	  タイプ: "FeatureCollection",
	  特徴: [
	    {
	      タイプ: "機能",
	      ジオメトリ:
	        タイプ: "ポイント"、
	        座標: [0, 0]
	      }
	    }
	  ]
	};
	
	var ベクトルソース = 新しい ベクトルソース({
	  機能: 新しい GeoJSON().readFeatures(geojsonObject)
	});
	
	var ベクトルレイヤー = 新しいベクトルレイヤー({
	  ソース: vectorSource、
	  スタイル: スタイル関数
	});
	
	デフォルトのエクスポート Vue.extend({
	  データ() {
	    戻る {
	      マップ: {}
	    };
	  },
	  マウント() {
	    this.map = 新しいマップ({
	      レイヤー:
	        新しいタイルレイヤー({
	          ソース: 新しい OSM()
	        })、
	        ベクトルレイヤー
	      ]、
	      ターゲット: "マップ"、
	      ビュー: 新しいビュー({
	        中心: [0, 0],
	        ズーム: 2
	      })
	    });
	
	    間隔を 500 に設定します。
	  },
	
	  メソッド: {
	    翻訳する() {
	      ベクトルソース.forEachFeature(関数(f) {
	        console.log("翻訳");
	        var x = Math.random() * 1000000;
	        var y = Math.random() * 1000000;
	        f.getGeometry().translate(x, y);
	      });
	    }
	  }
	});
	</スクリプト>
	<スタイル>
	.map {
	  幅: 100%;
	  高さ: 600px;
	}
	</スタイル>

これで、VUE + OPENLAYERS によるリアルタイム位置決め機能の実現に関するこの記事は終了です。VUE OPENLAYERS 位置決めに関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue + OpenLayers クイックスタートチュートリアル
  • Vue+openlayers は州や市の境界線を描画します
  • Openlayers が Vue プロジェクトに行政区画を描く
  • vue-openlayers はマップ座標ポップアップボックス効果を実現します
  • OpenLayers を Vue と統合して geojson をロードし、ポップアップ ウィンドウを実装する方法のチュートリアル
  • Vue+Openlayers カスタムトラックアニメーション
  • VueはOpenLayersを使用して移動するポイントアニメーションを実装します
  • VueはOpenLayersを使用してTiandi MapとAmapを読み込み

<<:  Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

>>:  MySQLユーザー管理操作例の分析

推薦する

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

今日もまた罠に落ちてしまいました。 私は以前MySQLの主キーオーバーフローに遭遇したことがあり、そ...

最新の超詳細な VMware 仮想マシンのダウンロードとインストールのグラフィック チュートリアル

目次1. 仮想マシンをダウンロードする2. 仮想マシンのインストールVMware のダウンロードとイ...

VMware Workstationはデバイス/資格情報ガードと互換性がありません

仮想マシンをインストールするときに、「VMware ワークステーションはデバイス/資格情報ガードと互...

Linux 型バージョン メモリ ディスク クエリ コマンド紹介

1. まず、Linux システムのバージョン内容について概要を説明します。 1. カーネルバージョン...

VSCode 構成 Git メソッドの手順

Git は vscode に統合されており、git コマンドをいくつか記述しなくても、クリックするだ...

MySQL 5.6.37 (zip) ダウンロード インストール 構成 グラフィック チュートリアル

この記事では、MySQL 5.6.37のダウンロード、インストール、設定のチュートリアルを参考までに...

2019 年に最も役立ち重要なオープンソース ツール トップ 10

Black Duck の 2017 年のオープンソース調査では、回答者の 77% がオープンソース...

Dockerfile を使用して Docker イメージをカスタマイズする方法

Dockerfile を使用したイメージのカスタマイズイメージのカスタマイズとは、実際には各レイヤー...

Mac に mysql5.7 をインストールするための完全な手順 (画像とテキスト付き)

最近、Mac システムを使用して、ローカル Web サーバー環境を構築する準備をしていました。 Ma...

Linuxでmore、less、catコマンドを使用してファイルの内容を表示します

Linux では、cat、more、less の各コマンドを使用してファイルの内容を表示できます。c...

Linux でのインストール中にソフトウェア パッケージの依存関係レポートに関連する問題の解決策

目次背景1) yumのkeepchche機能を有効にする: 方法1 2) yum-utils ソフト...

Javascript ファイルと Blob の詳細な説明

目次ファイル()文法パラメータ例ブロブ()文法パラメータ財産方法例要約するファイル() File()...

例によるMySql CURRENT_TIMESTAMP関数の分析

時間フィールドを作成するときデフォルトのCURRENT_TIMESTAMPデータを挿入する際、このフ...

Docker バインディング固定 IP/クロスホストコンテナ相互アクセス操作

序文これまでは、パイプワークで割り当てた静的 IP は一時的なものであり、再起動すると無効になってい...