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

推薦する

登録フォームのデザインルール

随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...

JavaScript でフォロー広告を実装するためのサンプルコード

フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲...

tomcat9.exeをクリックするとクラッシュする問題を解決する方法

ある読者から連絡があり、ダウンロードが終了し、操作がまだ開始されていないのに、なぜ Tomcat の...

Element-ui レイアウト (行と列コンポーネント) の実装

目次基本的な手順と使用方法行コンポーネントの分析レンダリング機能ソースコード分析Col成分の分析コン...

Linuxブートサービスを起動する2つの方法

目次rc.local メソッドchkconfig メソッドrc.local メソッド1 まず自動的に...

CSS における px、em、rem、%、vw、vh 単位の違いの詳細な説明

1.ピクセルpx はピクセルの略語で、画面解像度に対する相対的な長さの単位です。 2. えむ参照は親...

HTML テーブルインライン形式の詳細な説明

インライン形式<colgroup>...</colgroup>属性名 属性値...

Dockerコンテナの紹介

Dockerの概要Docker はオープンソースのソフトウェア展開ソリューションです。 Docker...

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

MySQL データベースの型変換のための CAST 関数と CONVERT 関数の説明

MySQL のCAST()およびCONVERT()関数を使用すると、ある型の値を取得し、別の型の値を...

MySQL 8.0.26 のインストールとアンインストールの完全なステップバイステップの記録

目次序文1. インストール1.公式サイトからダウンロード2. 構成を作成する3. MySQLを初期化...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

Reactにおける制御されたコンポーネントと制御されていないコンポーネントの簡単な分析

目次制御されていないコンポーネント制御コンポーネント知らせ結論は制御されていないコンポーネントフォー...

ウェブサイトメンテナンスページのリスト構築のヒント

また、多くの場合、メンテナンスのために Web サイトを少なくとも数分間オフラインにする必要がありま...