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

Beispiel für den schnellen Aufbau eines Redis-Clusters mit Docker

Was ist Redis Cluster? Redis Cluster ist eine von...

Hallo – Erfahrungsaustausch zum Entwurf von Dialogfeldern

„Was ist los?“ Sofern Sie nicht an bestimmte Arten...

8 leistungsstarke Techniken zum Erstellen von HTML-Webseiten

<br />Es gibt zwar viele Tools zum Erstellen...

So implementieren Sie den Vue-Mausrad-Scrolling-Umschalt-Routing-Effekt

Eine Root-Routing-Komponente (die Root-Routing-Ko...

Tabelle zeigt den Grenzcode, den Sie anzeigen möchten

Gemeinsame Eigenschaften von Tabellen Die grundle...

MySQL SHOW PROCESSLIST unterstützt den gesamten Prozess der Fehlerbehebung

1. SHOW PROCESSLIST-Befehl SHOW PROCESSLIST zeigt...

Umfassende Zusammenfassung der MySQL-Funktionen

Inhaltsverzeichnis 1. Häufig verwendete Zeichenfo...

Verwendung des offiziellen MySQL-Exporttools mysqlpump

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

So implementieren Sie abgerundete Ecken mit CSS3 unter Verwendung von JS

Ich bin auf ein Beispiel gestoßen, als ich nach e...

Detaillierte Erläuterung des CocosCreator-Nachrichtenverteilungsmechanismus

Überblick Dieser Artikel beginnt mit der Einführu...

Sieben Prinzipien eines guten Designers (1): Schriftdesign

Nun, vielleicht sind Sie ein Design-Guru, oder vie...

Lösung für das Problem, dass sich der mysql8.0.11-Client nicht anmelden kann

In diesem Artikel erfahren Sie, wie Sie das Probl...

So fragen Sie Bilder in einem privaten Register ab oder erhalten sie

Docker fragt Bilder in einem privaten Register ab...

Einführung und Installation von MySQL Shell

Inhaltsverzeichnis 01 ReplicaSet-Architektur 02 E...