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
Wenn Sie Ihren Hostnamen ändern möchten, können S...
Inhaltsverzeichnis 1. Sichern Sie die alten MySQL...
Einführung yum (Yellow dog Updater, Modified) ist...
Inhaltsverzeichnis Vorwort Einen Stapel und zwei ...
1. Melden Sie sich bei MySQL an und verwenden Sie...
Funktionen von MySQL: MySQL ist ein relationales ...
Dieser Befehl ändert die Datentabelle ff_vod und ...
1. Konvertierung des Übermittlungsformats für die...
In diesem Artikel wird der spezifische Code für J...
Mehrere typische Werte von innodb_flush_method fs...
Der mathematische Ausdruck calc() ist eine Funkti...
Anforderungen: Entfernen Sie HTTP-Antwortheader i...
Code kopieren Der Code lautet wie folgt: <html...
HTML-Semantik scheint ein alltägliches Problem zu...
Wenn wir das Dialogfeld „Ordnereigenschaften“ in W...