VUE + OPENLAYERS erreicht Echtzeit-Positionierungsfunktion

VUE + OPENLAYERS erreicht Echtzeit-Positionierungsfunktion

Vorwort

Diese Artikelserie stellt ein einfaches Beispiel für die Echtzeitpositionierung vor, das hauptsächlich Folgendes umfasst:

  • Das Service-Backend ist in Java geschrieben und simuliert die Generierung von GeoJSON-Daten.
  • Die Front-End-Anzeige verwendet Vue + OpenLayers, das dafür verantwortlich ist, regelmäßig GeoJSON-Daten vom Back-End-Dienst anzufordern und die Standortdaten in Form von Tags anzuzeigen.

Der erzielte Effekt:

Bildbeschreibung hier einfügen

1. Etikettenstil definieren

	var Bild = neuer Kreisstil({
	  Radius: 5,
	  füllen: neue Füllung({
	    Farbe: "rgba(255, 0, 0, 1)"
	  }),
	  Strich: neuer Strich({ Farbe: "rot", Breite: 1 })
	});
	
	var Stile = {
	  Punkt: neuer Stil({
	    Bild: Bild
	  })
	};
	
	var Stilfunktion = Funktion(Feature) {
	  Stile zurückgeben[feature.getGeometry().getType()];
	};

2. Simulation von GeoJSON-Daten

	var geojsonObject = {
	  Typ: "FeatureCollection",
	  Merkmale: [
	    {
	      Typ: "Feature",
	      Geometrie:
	        Typ: "Punkt",
	        Koordinaten: [0, 0]
	      }
	    }
	    //Hier können Sie weitere Funktionen hinzufügen
	  ]
	};

3. VerctorLayer erstellen

	// GeoJSON lesen und als Datenquelle von vectorSource verwenden var vectorSource = new VectorSource({
	  Funktionen: neues GeoJSON().readFeatures(geojsonObject)
	});
	
	var VektorLayer = neuer VektorLayer({
	  Quelle: Vektorquelle,
	  Stil: Stilfunktion
	});

4. Erstellen Sie eine Karte

      montiert() {
    diese.map = neue Map({
      Schichten:
        neue Kachelebene({
          Quelle: neues OSM()
        }),
        Vektorebene
      ],
      Ziel: "Karte",
      Ansicht: neue Ansicht({
        Mitte: [0, 0],
        Zoom: 2
      })
    });
	
	//Legen Sie die geplante Aufgabe fest und rufen Sie die mobile Label-Methode auf: setInterval(this.translate, 500);
  },

5. Simulieren Sie Bewegungen in Echtzeit

	 Methoden: {
	    übersetzen() {
	      //Beschriftungen durchlaufen und Koordinatenpositionen ändern vectorSource.forEachFeature(function(f) {
	        console.log("übersetzen");
	        
	        // Koordinateninkremente zufällig generieren (hier keine absoluten Koordinatenwerte!!!)
	        var x = Math.random() * 1000000;
	        var y = Math.random() * 1000000;
	        f.getGeometry().translate(x, y);
	      });
	    }
	  }

Zusammenfassen

Das Obige ist ein einfaches Front-End-Beispiel zur Echtzeitpositionierung, das Beschriftungen durch simulierte GeoJSON-Objekte anzeigt und Änderungen der Beschriftungsposition durch geplante Aufgaben simuliert. Im nächsten Artikel wird der Java-Server verwendet, um Standortdaten bereitzustellen und ein Echtzeit-Positionierungssystem vollständig zu simulieren.
Vollständiger Code, der direkt im Vue-Projekt ausgeführt werden kann:

	<Vorlage>
	  <div>
	    <span>Hallo, Karte</span>
	    <div id="Karte" Klasse="Karte"></div>
	  </div>
	</Vorlage>
	
	<script lang="ts">
	importiere "ol/ol.css";
	GeoJSON aus „ol/format/GeoJSON“ importieren;
	Karte aus „ol/Map“ importieren;
	Ansicht aus „ol/View“ importieren;
	importiere { Kreis als Kreisstil, Füllung, Strich, Stil } aus "ol/style";
	importiere { OSM, Vektor als Vektorquelle } aus "ol/source";
	importiere { Kachel als Kachelebene, Vektor als Vektorebene } aus "ol/layer";
	
	importiere Vue von „vue“;
	
	var Bild = neuer Kreisstil({
	  Radius: 5,
	  füllen: neue Füllung({
	    Farbe: "rgba(255, 0, 0, 1)"
	  }),
	  Strich: neuer Strich({ Farbe: "rot", Breite: 1 })
	});
	
	var Stile = {
	  Punkt: neuer Stil({
	    Bild: Bild
	  })
	};
	
	var Stilfunktion = Funktion(Feature) {
	  Stile zurückgeben[feature.getGeometry().getType()];
	};
	
	var geojsonObject = {
	  Typ: "FeatureCollection",
	  Merkmale: [
	    {
	      Typ: "Feature",
	      Geometrie:
	        Typ: "Punkt",
	        Koordinaten: [0, 0]
	      }
	    }
	  ]
	};
	
	var Vektorquelle = neue Vektorquelle ({
	  Funktionen: neues GeoJSON().readFeatures(geojsonObject)
	});
	
	var VektorLayer = neuer VektorLayer({
	  Quelle: Vektorquelle,
	  Stil: Stilfunktion
	});
	
	exportiere Standard Vue.extend({
	  Daten() {
	    zurückkehren {
	      Karte: {}
	    };
	  },
	  montiert() {
	    diese.map = neue Map({
	      Schichten:
	        neue Kachelebene({
	          Quelle: neues OSM()
	        }),
	        Vektorebene
	      ],
	      Ziel: "Karte",
	      Ansicht: neue Ansicht({
	        Mitte: [0, 0],
	        Zoom: 2
	      })
	    });
	
	    setInterval(dieses.translate, 500);
	  },
	
	  Methoden: {
	    übersetzen() {
	      vectorSource.forEachFeature(Funktion(f) {
	        console.log("übersetzen");
	        var x = Math.random() * 1000000;
	        var y = Math.random() * 1000000;
	        f.getGeometry().translate(x, y);
	      });
	    }
	  }
	});
	</Skript>
	<Stil>
	.Karte {
	  Breite: 100 %;
	  Höhe: 600px;
	}
	</Stil>

Dies ist das Ende dieses Artikels über die Realisierung der Echtzeit-Positionierungsfunktion durch VUE + OPENLAYERS. Weitere relevante Inhalte zur Positionierung durch VUE OPENLAYERS finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue + OpenLayers Schnellstart-Tutorial
  • Vue+openlayers zeichnet Provinz- und Gemeindegrenzen
  • Openlayers zeichnet Verwaltungsabteilungen im Vue-Projekt
  • vue-openlayers realisiert den Popup-Box-Effekt für Kartenkoordinaten
  • Tutorial zur Integration von OpenLayers in Vue zum Laden von GeoJSON und Implementieren eines Popup-Fensters
  • Vue+Openlayers benutzerdefinierte Track-Animation
  • Vue verwendet OpenLayers, um bewegte Punktanimationen zu implementieren
  • Vue verwendet Openlayers zum Laden von Tiandi Map und Amap

<<:  Erstellen Sie einen Tomcat9-Cluster über Nginx und realisieren Sie die Sitzungsfreigabe

>>:  Analyse von Beispielen für MySQL-Benutzerverwaltungsvorgänge

Artikel empfehlen

Webdesign-Tutorial (5): Visuelles Webdesign

<br />Vorheriger Artikel: Webdesign-Tutorial...

Docker-Installations- und Konfigurationsschritte für das Redis-Image

Inhaltsverzeichnis Vorwort Umfeld Installieren Er...

CSS3 beschleunigt und verzögert Übergänge

1. Verwenden Sie die Geschwindigkeitskontrollfunk...

Erfahrungen bei der Neugestaltung der Homepage von TOM.COM

<br />Ohne Vorwarnung sah ich auf cnBeta Neu...

Das WeChat-Applet implementiert feste Header- und Listentabellenkomponenten

Inhaltsverzeichnis brauchen: Funktionspunkte Rend...

Prozessdiagramm zur Implementierung des CentOS-IP-Verbindungsnetzwerks

1. Melden Sie sich beim System an und geben Sie d...

Beispiel für die Implementierung eines gestrichelten Rahmens mit html2canvas

html2canvas ist eine Bibliothek, die Canvas aus H...

Häufige Fehler beim Schreiben von HTML-Tags

Wir sollten besser aufpassen, denn die HTML-Poliz...

MySQL-Reihe: Redo-Log, Undo-Log und Binlog – ausführliche Erklärung

Durchführung von Transaktionen Das Redo-Protokoll...

Wie erreicht MySQL die Parallelität mehrerer Versionen?

Inhaltsverzeichnis MySQL-Mehrversionen-Parallelit...

Mysql-Abfrageanweisung mit mehreren Bedingungen und dem Schlüsselwort „And“

MySQL-Abfrage mit mehreren Bedingungen und dem Sc...