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ユーザー管理操作例の分析

推薦する

Nginx でアクセス頻度、ダウンロード速度、同時接続数を制限する方法

1. アクセス頻度、同時接続、ダウンロード速度を制限するために使用されるモジュールと命令の概要ngx...

Vueリストレンダリングキーの原理と機能の詳細な説明

目次リストレンダリングキーの原理と機能主要原則の分析キーの役割要約するリストレンダリングキーの原理と...

JS の効率的なマジック演算子の概要

JavaScript は現在、毎年新しいバージョンがリリースされており、より便利で効率的な新しい演算...

Youku 動画から 30 秒の広告コードを削除する 2 つの方法

誰もがこんな気持ちになったことがあると思います。30 秒の広告が入った動画を見ると、とても不快に感じ...

シンプルなCSSアニメーションのtransition属性の詳しい説明

1. 遷移属性の理解1. transition 属性は、次の 4 つの遷移プロパティを設定するために...

Linuxシステムでノードプロセスを実行しているが、プロセスを強制終了できない問題を解決します

まず、Linux システムで実行されているノード プロセスはプロセスを強制終了できないことを紹介しま...

Docker環境を構築する簡単な方法

まず、Docker とは何かを理解しましょう。 Docker は、アプリケーションをデプロイするため...

Vite2.x に基づく Vue 3.x プロジェクトの実装

Vue 3.x プロジェクトの作成 npm init @vitejs/app my-vue-app ...

単一マシン上での Tomcat の複数インスタンスの実装

1. はじめにまず、1 台のマシンで複数のインスタンスを使用する理由という質問に答える必要があります...

MYSQL スロークエリとログの例の説明

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

MySQLにログインする際のエラー「ERROR 1045 (28000)」を解決する方法

今日はサーバーにログインして、データベース内のいくつかのものを変更する準備をしました。しかし、パスワ...

Vueルータールーティングの詳細な説明

目次1. 基本的な使い方2. 注意すべき点3. マルチレベルルーティング(マルチレベルルーティング)...

Linux でファイルをあいまい検索するのに適したコマンドは何ですか?

1. はじめにこの記事では、主に Linux システムでコマンドライン ツールを使用してファイルを...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...

MySQL と Golan 間の従来の分散トランザクションのための 7 つのソリューション

目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...