VorwortOpenlayer verfügt über ein eigenes Erweiterungs-Plugin ol-ext, das wir hier verwenden, um Grafikoperationen zu implementieren: Ziehen, Drehen, Zoomen, Strecken, Verschieben usw. sowie dessen Ereignisüberwachung. Schließlich müssen wir die Daten nach dem Zeichnen im Backend speichern und in der Datenbank speichern. Ressourcen zum Thema1. ol-ext offizielle Adresse: Eingang 2. ol-ext entsprechende Datenadresse: Eintrag 3.ol-ext Quellcode Gitee-Adresse: Eintrag 4. Openlayers neueste offizielle Website: Eingang 5. API der offiziellen Openlayers-Website: Eintrag Ergebnisse erzielenDrehen, ziehen Abbildung 1: Implementierungseffekt Abbildung 2: Rotationseffekt Abbildung 3: Links- und Rechtsbewegungseffekt Implementierungsschritte1. Führen Sie Openlayers in Vue ein npm ich ol --speichern Anhang: npm lädt den angegebenen Versionsbefehl herunter, Sie können ihn bei Bedarf verwenden npm install --save-dev [email protected] 2. Führen Sie das OpenLayers-Erweiterungspaket ol-ext in Vue ein npm installiere ol-ext --save Anhang: npm lädt den angegebenen Versionsbefehl herunter, Sie können ihn bei Bedarf verwenden npm install --save [email protected] 3. Erstellen Sie einen Kartencontainer <Vorlage> <div id="Karte" Klasse="Karte"></div> </Vorlage> 4. Führen Sie eine spezifische Konfiguration in js ein. Entsprechend Ihren spezifischen Änderungen füge ich hier meine eigene ein ol bezogen: importiere "ol/ol.css"; Ansicht aus „ol/View“ importieren; Karte aus „ol/Map“ importieren; importiere TileLayer aus „ol/layer/Tile“; Overlay aus „ol/Overlay“ importieren; importiere XYZ aus „ol/source/XYZ“; importiere { Vektor als SourceVec, Cluster, Vektor als VectorSource } aus "ol/source"; importiere { Feature } von "ol"; importiere { Vektor als LayerVec, Vektor als VectorLayer } aus "ol/layer"; importiere { Punkt, Linienzug, Polygon } aus "ol/geom"; importieren { Stil, Symbol, Füllen, Schlaganfall, Text, Kreis als CircleStyle, } von "ol/style"; importiere { OSM, TileArcGISRest } aus "ol/source"; ol-ext bezogen: importiere ExtTransform aus „ol-ext/interaction/Transform“ 5. Implementieren Sie die Map-Methode: Daten() { zurückkehren { Karte: null, Zentrum: [116.39702518856394, 39.918590567855425], //Längen- und Breitengrad der Verbotenen Stadt in Peking ZentrumGröße: 11,5, Projektion: "EPSG:4326", } } montiert() { dies.initMap() } Methoden: { //Karte initialisieren initMap() { // Rendere die Karte var layers = [ //Dunkelblauer Hintergrund// new TileLayer({ // Quelle: neues XYZ({ // URL: // "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}", // }), // }), // Hintergrund initialisieren // new TileLayer({ // Quelle: neues OSM(), // }) neue Kachelebene({ Titel: "Straßenkarte", Quelle: neues XYZ({ url: "http://localhost:8888/haoxing-map/sosomaps/roadmap/{z}/{x}/{y}.jpg", //zwh lokale Verwendung}), }), ]; diese.map = neue Map({ Schichten: Schichten, Ziel: "Karte", Ansicht: neue Ansicht({ Zentrum: dieses.Zentrum, Projektion: diese.Projektion, Zoom: diese.Mittelgröße, maxZoom: 17, minZoom: 8, }), }); }, 6. Polygondaten zur Karte hinzufügen montiert() { dies.initMap() dies.createPolygon() }, Methoden: { //Erstelle ein Polygon createPolygon() { //Füge eine Ebene hinzu und lege den Punktbereich fest const polygon = new Feature({ Geometrie: neues Polygon([ [ [116.39314093500519,40.0217660530101], [116.47762344990831,39.921746523871924], [116.33244947314951,39.89892653421418], [116.30623076162784,40.00185925352143], ] ]), }) //Stil festlegen polygon.setStyle(new Style({ Strich: neuer Strich({ Breite: 4, Farbe: [255, 0, 0, 1], }), })) //Fügen Sie die Grafiken der Karte hinzu this.map.addLayer(new VectorLayer({ Quelle: neue Vektorquelle ({ Funktionen: [Polygon], }), })) }, } 7. Fügen Sie der Karte spezifische Betriebsmethoden und Effekte hinzu montiert() { dies.initMap() dies.createPolygon() dies.onEdit() }, //Operationsereignis onEdit() { const transform = neue ExtTransform({ enableRotatedTransform: false, Treffertoleranz: 2, übersetzen: true, // ziehen strecken: false, // strecken skalieren: true, // skalieren drehen: true, // drehen translateFeature: false, noFlip: wahr, // Ebenen: [], }) this.map.addInteraction(transformieren) //Startereignis transform.on(['rotatestart','translatestart'], function(e){ // Drehung let startangle = e.feature.get('angle')||0; // Übersetzung konsole.log(1111); Konsole.log(Startwinkel); }); //Rotation transform.on('rotierend', Funktion (e) { konsole.log(2222); console.log("drehen: "+((e.angle*180/Math.PI -180)%360+180).toFixed(2)); konsole.log(e); }); //Verschieben transform.on('translating', function (e){ konsole.log(3333); Konsole.log(e.delta); konsole.log(e); }); //Drag-Ereignis transform.on('scaling', function (e){ konsole.log(4444); Konsole.log(z. B. Maßstab); konsole.log(e); }); //Ereignisende transform.on(['rotateend', 'translateend', 'scaleend'], function (e) { konsole.log(5555); }); }, Dies ist das Ende dieses Artikels über Vue+Openlayer zum Erzielen von Drag- und Rotationsverformungseffekten von Grafiken. Weitere verwandte Vue Openlayer-Inhalte 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:
|
<<: Detaillierte Erklärung der MySQL DEFINER-Verwendung
>>: Linux-Betrieb und -Wartung – Tutorial zur grundlegenden Datenträgerverwaltung
Die Frontend-Entwicklungsabteilung wächst, die Mi...
Bereitstellungsumgebung: Hier wird ein Docker-Con...
Dieser Artikel beschreibt anhand eines Beispiels,...
Inhaltsverzeichnis 01 Szenarioanalyse 02 Funktion...
Inhaltsverzeichnis Vorwort Überprüfen und deinsta...
In diesem Artikelbeispiel wird der spezifische JS...
1. Systemumgebung Die Systemversion nach dem Yum-...
1. Hintergrund Mit der Weiterentwicklung des Proj...
Öffnen Sie das dekomprimierte Verzeichnis von Tom...
Inhaltsverzeichnis 1. Grundkenntnisse der Indizie...
einführen Wenn Sie einen OSS-Speicherdienst wie A...
Vorwort Dieses Steuerelement weist beim direkten ...
Artikel-Mindmap Warum Master-Slave-Replikation un...
MySQL-Tuning: Detaillierte Erläuterung und prakti...
In diesem Artikelbeispiel wird der spezifische Co...