1. Schreiben Sie vor Es gibt drei übliche Kartenüberlagerungen: 2. Overlay zur Implementierung eines Popup-Fensters2.1 Detaillierte Erläuterung der addPopup () -Methode der Vue-Seite
Der spezifische Code lautet wie folgt: addPopup() { // Verwenden Sie Variablen, um das für das Popup-Fenster erforderliche DOM-Objekt zu speichern. var container = document.getElementById("popup"); var closer = document.getElementById("popup-closer"); var Inhalt = document.getElementById("Popup-Inhalt"); // Ein Popup-Overlay-Objekt erstellen this.overlay = new Overlay({ element: container, //Overlay-Objekt und DOM-Objekt binden autoPan: true, //Definieren, dass das Popup-Fenster beim Klicken auf die Kante möglicherweise nicht vollständig eingestellt wird autoPanAnimation: { Dauer: 250 //Die Animationszeit des automatischen Schwenkeffekts beträgt 9 Millisekunden) } }); // Das Popup-Fenster zur Karte hinzufügen this.map.addOverlay(this.overlay); lass _das = dies; /** * Fügen Sie eine Funktion hinzu, die auf das Schließen des Popup-Fensters reagiert*/ näher.onclick = Funktion() { _that.overlay.setPosition(undefiniert); näher.unschärfe(); gibt false zurück; }; /** * Fügen Sie eine Click-Map-Antwortfunktion hinzu, um Popup-Aktionen zu verarbeiten*/ this.map.on("Einzelklick", Funktion(evt) { Konsole.log(evt.Koordinate); lass Koordinate = transformieren( evt.Koordinate, "EPSG:3857", „EPSG:4326“ ); // Klicken Sie auf das Lineal (hier ist es das Lineal (Meter), nicht Breiten- und Längengrad); let hdms = toStringHDMS(toLonLat(evt.coordinate)); // Zur Anzeige in Längen- und Breitengrad umwandeln content.innerHTML = ` <p>Sie haben hier geklickt:</p> <p>Breitengrad und Längengrad: <p><code> ${hdms} </code> <p> <p>Koordinaten:</p>X: ${coordinate[0]} Y: ${coordinate[1]}`; _that.overlay.setPosition(evt.coordinate); //Das Overlay an den angegebenen x,y-Koordinaten anzeigen}); } Wirkung 2.2 Auswirkung einer falschen AutoPan-EigenschaftKlicken Sie ganz nach rechts auf den Bildschirm. Sie sehen, dass sich die Karte nicht an die Position des Mausklicks anpasst. 3. Overlay zur Implementierung von EtiketteninformationenVue-Seite addMarker() { var marker = neues Overlay({ Position: fromLonLat([104.043505, 30.58165]), Positionierung: "Mitte-Mitte", Element: document.getElementById("Markierung"), stopEvent: false }); diese.map.addOverlay(Markierung); }, 4 Overlay implementiert TextinformationenVue-Seite Text hinzufügen() { var textInfo = neues Overlay({ Position: fromLonLat([104.043505, 30.58165]), Offset: [20, -20], Element: document.getElementById("textInfo") }); diese.map.addOverlay(textInfo); }, 5. Den kompletten Code anhängen<Vorlage> <div id="app"> <div id="Karte" ref="Karte"></div> <div id="Markierung"></div> <div id="textInfo">Ich bin Textinformation</div> <div id="popup" Klasse="ol-popup"> <a href="#" rel="external nofollow" id="popup-closer" class="ol-popup-closer"></a> <div id="Popup-Inhalt" Klasse="Popup-Inhalt"></div> </div> </div> </Vorlage> <Skript> importiere "ol/ol.css"; importiere { Karte, Ansicht, Koordinate } von "ol"; importiere { toStringHDMS } von "ol/coordinate"; importiere TileLayer aus „ol/layer/Tile“; importiere XYZ aus „ol/source/XYZ“; Overlay aus „ol/Overlay“ importieren; importiere { fromLonLat, transform, toLonLat } von "ol/proj"; // Implementierung des Popup-Fensters export default { Name: "Dashboard", Daten() { zurückkehren { Karte: null, Overlay: null }; }, Methoden: { initMap() { let target = "map"; //Binden an die ID des Seitenelements zum Rendern let tileLayer = new TileLayer({ Quelle: neues XYZ({ URL: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}" }) }); let view = neue Ansicht({ // Projektion: "EPSG:4326", //Verwende dieses Koordinatensystem als Mittelpunkt: fromLonLat([104.912777, 34.730746]), //Koordinaten des Kartenmittelpunkts zoom: 4.5 //Zoomstufe }); diese.map = neue Map({ Ziel: Ziel, //DOM-Elemente zum Rendern von Ebenen binden: [Kachelebene], //Datenquelle der Karte konfigurieren Ansicht: Ansicht //Anzeigeoptionen der Karte konfigurieren (Koordinatensystem, Mittelpunkt, Zoomstufe usw.) }); }, /** * Der erste Typ: Punktmarkierung * Erstellen Sie eine Anmerkungsinformation */ addMarker() { var marker = neues Overlay({ Position: fromLonLat([104.043505, 30.58165]), Positionierung: "Mitte-Mitte", Element: document.getElementById("Markierung"), stopEvent: false }); diese.map.addOverlay(Markierung); }, /** * Der zweite Typ: Textbeschriftung * Informationen zu Beschriftungsanmerkungen erstellen */ Text hinzufügen() { var textInfo = neues Overlay({ Position: fromLonLat([104.043505, 30.58165]), Offset: [20, -20], Element: document.getElementById("textInfo") }); diese.map.addOverlay(textInfo); }, /** * Der dritte Typ: Popup-Fenster * Eine Popup-Nachricht erstellen */ addPopup() { // Verwenden Sie Variablen, um das für das Popup-Fenster erforderliche DOM-Objekt zu speichern. var container = document.getElementById("popup"); var closer = document.getElementById("popup-closer"); var Inhalt = document.getElementById("Popup-Inhalt"); // Ein Popup-Overlay-Objekt erstellen this.overlay = new Overlay({ element: container, //Overlay-Objekt und DOM-Objekt binden autoPan: false, //Definieren, dass das Popup-Fenster beim Klicken auf die Kante möglicherweise nicht vollständig eingestellt wird autoPanAnimation: { Dauer: 250 //Die Animationszeit des automatischen Schwenkeffekts beträgt 9 Millisekunden) } }); // Das Popup-Fenster zur Karte hinzufügen this.map.addOverlay(this.overlay); lass _das = dies; /** * Fügen Sie eine Funktion hinzu, die auf das Schließen des Popup-Fensters reagiert*/ näher.onclick = function() { _that.overlay.setPosition(undefiniert); näher.unschärfe(); gibt false zurück; }; /** * Fügen Sie eine Klick-Antwortfunktion hinzu, um Popup-Aktionen zu verarbeiten */ this.map.on("Einzelklick", Funktion(evt) { Konsole.log(evt.Koordinate); lass Koordinate = transformieren( evt.Koordinate, "EPSG:3857", „EPSG:4326“ ); // Klicken Sie auf das Lineal (hier ist es das Lineal (Meter), nicht Breiten- und Längengrad); let hdms = toStringHDMS(toLonLat(evt.coordinate)); // Zur Anzeige in Längen- und Breitengrad umwandeln content.innerHTML = ` <p>Sie haben hier geklickt:</p> <p>Breitengrad und Längengrad: <p><code> ${hdms} </code> <p> <p>Koordinaten:</p>X: ${coordinate[0]} Y: ${coordinate[1]}`; _that.overlay.setPosition(evt.coordinate); //Das Overlay an den angegebenen x,y-Koordinaten anzeigen}); } }, montiert() { dies.initMap(); // Popup-Fenstermethode initialisieren this.addText(); dies.addMarker(); dies.addPopup(); } }; </Skript> <style lang="scss" scoped> html, Körper { Höhe: 100%; } #app { Mindesthöhe: berechnet (100vh – 50px); Breite: 100 %; Position: relativ; Überlauf: keiner; #Karte { Höhe: 888px; Mindesthöhe: berechnet (100vh – 50px); } } .ol-popup { Position: absolut; Hintergrundfarbe: weiß; -webkit-filter: Schlagschatten(0 1px 4px rgba(0, 0, 0, 0,2)); Filter: Schlagschatten (0 1px 4px rgba (0, 0, 0, 0,2)); Polsterung: 15px; Rahmenradius: 10px; Rand: 1px durchgezogen #cccccc; unten: 12px; links: -50px; } .ol-popup:nach, .ol-popup:vor { oben: 100 %; Rand: durchgehend transparent; Inhalt: " "; Höhe: 0; Breite: 0; Position: absolut; Zeigerereignisse: keine; } .ol-popup:nach { Farbe der oberen Umrandung: weiß; Rahmenbreite: 10px; links: 48px; Rand links: -10px; } .ol-popup:vor { Farbe des oberen Rahmens: #cccccc; Rahmenbreite: 11px; links: 48px; Rand links: -11px; } .ol-popup-closer { Textdekoration: keine; Position: absolut; oben: 2px; rechts: 8px; } .popup-inhalt { Breite: 400px; } .ol-popup-closer:nach { Inhalt: "✖"; } #Markierung { Breite: 20px; Höhe: 20px; Hintergrund: rot; Randradius: 50 %; } #textInfo { Breite: 200px; Höhe: 40px; Zeilenhöhe: 40px; Hintergrund: Burlywood; Farbe: gelb; Textausrichtung: zentriert; Schriftgröße: 20px; } </Stil> Dies ist das Ende dieses Artikels über die drei häufigsten Verwendungen von OpenLayers6-Karten-Overlays (Markierungstext für Popup-Fenster). Weitere relevante Inhalte zu Vue OpenLayer-Popup-Karten-Overlays 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:
|
<<: Verwendung des Linux-Befehls usermod
Vorwort Die Projektanforderung besteht darin, fes...
Wie wir alle wissen, ist SSH derzeit das zuverläs...
Viele fragen sich vielleicht: Muss der Text auf d...
Inhaltsverzeichnis 1. Übersicht 1.1 Definition 1....
Vorwort Dies ist eine alte Forderung, aber es gib...
Sechs Schritte von JDBC: 1. Registrieren Sie den ...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis Benutzerdefiniertes Docker-Net...
Inhaltsverzeichnis Vorwort Szenarien für die Verw...
Xrdp ist eine Open-Source-Implementierung des Rem...
Wenn Sie Softwareentwickler sind, müssen Sie mit ...
Bei den vorherigen Artikeln handelte es sich um m...
Passive Prüfung Mit passiven Integritätsprüfungen...
ps: Die Umgebung ist wie der Titel Mögliche Abhän...
Verwenden Sie reguläre Ausdrücke, um die IE-Browse...