Vue + Openlayer realisiert den Drag- und Rotationsverformungseffekt von Grafiken

Vue + Openlayer realisiert den Drag- und Rotationsverformungseffekt von Grafiken

Vorwort

Openlayer 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 Thema

1. 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 erzielen

Drehen, ziehen

Abbildung 1: Implementierungseffekt

Abbildung 2: Rotationseffekt

Abbildung 3: Links- und Rechtsbewegungseffekt

Implementierungsschritte

1. 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:
  • Vue verwendet Openlayers zum Laden von Tiandi Map und Amap
  • Realisieren Sie Kartenaggregations- und Streueffekte basierend auf Vue + OpenLayer
  • Openlayers zeichnet Verwaltungsabteilungen im Vue-Projekt
  • Vue+Openlayers benutzerdefinierte Track-Animation
  • Vue verwendet OpenLayers, um bewegte Punktanimationen zu implementieren

<<:  Detaillierte Erklärung der MySQL DEFINER-Verwendung

>>:  Linux-Betrieb und -Wartung – Tutorial zur grundlegenden Datenträgerverwaltung

Artikel empfehlen

Detailliertes Beispiel für die Verwendung von MySQL-Triggern

Details zur MySQL-Triggersyntax: Ein Trigger ist ...

So finden Sie die my.ini-Konfigurationsdatei in MySQL 5.6 unter Windows

Machen Sie sich eine Notiz, damit Sie später dara...

Vue3 implementiert ein Beispiel für eine Nachrichtenkomponente

Inhaltsverzeichnis Komponentendesign Definieren d...

Wird CSS3 SCSS wirklich ersetzen?

Beim Styling unserer Webseiten haben wir die Wahl...

So schreiben Sie den Einführungsinhalt der Infoseite der Website

Alle Websites, ob offiziell, E-Commerce, soziale ...

Detaillierte Erklärung des dynamischen Weihnachtsbaums durch JavaScript

Inhaltsverzeichnis 1. Animierter Weihnachtsbaum, ...

PNG-Alpha-Transparenz in IE6 (vollständige Sammlung)

Viele Leute sagen, dass IE6 PNG-Transparenz nicht...

js zur Implementierung eines einfachen Bullet-Screen-Systems

In diesem Artikel wird der spezifische Code von n...

Javascript-Betriebsmechanismus „Event Loop“

Inhaltsverzeichnis 1. Vier Konzepte 1. JavaScript...

Beispielcode zur Implementierung einer Upload-Komponente mit Vue3

Inhaltsverzeichnis Allgemeine Entwicklung von Upl...

Erklärung zur Verwendung von JavaScript ECharts

Ich habe ECharts schon einmal bei einem Projekt v...