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

推薦する

インラインブロックを使用した複数のdiv間の間隔はプログラミング方法とは異なります

inline-block について学習しているときに、境界線と inline-block を持つ複数...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

MySQL の異常なエラー ERROR: 2002 を解決する方法

最近、MySQL の起動中にエラーが発生しました。エラー メッセージは次のとおりです。 エラー 20...

AngularとIonicのライフサイクルとフック関数を素早く理解するための記事

目次角度成し遂げる呼び出し順序知らせイオニックionic はページのライフサイクルをどのように処理し...

SELINUXの動作原理の詳細な説明

1. はじめにSELinux が Linux にもたらす主な価値は、柔軟で構成可能な MAC メカニ...

VMware pro15 インストール macOS10.13 詳細インストール図(画像とテキスト)

編集者は最近、macOS システムを使い始めたかったので、VMware に macOS イメージ シ...

TomcatとJDKのバージョンの対応と各Tomcatバージョンの機能

Apache Tomcat は、Java Servlet および Java Server Pages...

分散監視システムZabbixはSNMPとJMXチャネルを使用してデータを収集します

前回の記事では、Zabbix のパッシブ、アクティブ、Web 監視に関するトピックについて学習しまし...

Vue.js フロントエンドプロジェクト向け多言語ソリューションのアイデアと実践

目次1. 通常どのようなコンテンツを処理する必要があるか2. 基本的な考え方3. 具体的な実践の詳細...

Mysql系SQLクエリ文の書き順と実行順を詳しく解説

目次1. 完全なSQLクエリステートメントの記述順序2. 完全なSQL文の実行順序3. select...

JS がビデオ弾幕効果を実現

これを実現するには、ES6 モジュール開発とオブザーバー モードを使用します。オブザーバー パターン...

プライベートDockerリポジトリであるHarborをインストールするための詳細な手順

Harborのインストールは非常に簡単ですが、Dockerログインで行き詰まってしまいました。このブ...

Linux ユーザー スクリプトの作成/推測ゲーム/ネットワーク カード トラフィック監視の紹介

目次1. ユーザーが作成したスクリプト2. 単語当てゲーム3. ネットワークカードのトラフィック監視...

JSON.parse と JSON.stringify の使い方の詳細な説明

目次JSON.パースJSON.parse 構文リバイバーパラメータJSON.parse の機能その他...

Dockerはrabbitmqのサンプルコードをインストールして実行します

イメージをプルします: [mall@VM_0_7_centos ~]$ sudo docker pu...