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

So ändern Sie den Hostnamen in Linux dauerhaft

Wenn Sie Ihren Hostnamen ändern möchten, können S...

Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration

Inhaltsverzeichnis 1. Sichern Sie die alten MySQL...

Linux Yum-Paketverwaltungsmethode

Einführung yum (Yellow dog Updater, Modified) ist...

So ändern Sie die Zeichensatzkodierung in MySQL 5.5/5.6 unter Linux auf UTF8

1. Melden Sie sich bei MySQL an und verwenden Sie...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.17

Funktionen von MySQL: MySQL ist ein relationales ...

Mysql behält den vorhandenen Inhalt bei und fügt später Inhalte hinzu

Dieser Befehl ändert die Datentabelle ff_vod und ...

Tipps zur Verwendung von Vue-Elementen und Nuxt

1. Konvertierung des Übermittlungsformats für die...

innodb_flush_method-Wertmethode (Beispielerklärung)

Mehrere typische Werte von innodb_flush_method fs...

Tiefgreifendes Verständnis mathematischer Ausdrücke in CSS calc()

Der mathematische Ausdruck calc() ist eine Funkti...

IIS7~IIS8.5 Löschen oder Ändern des Serverprotokollheaders Server

Anforderungen: Entfernen Sie HTTP-Antwortheader i...

js-Code, der den Button mit der Eingabetaste verknüpft

Code kopieren Der Code lautet wie folgt: <html...

HTML-Tipps, um Ihren Code semantisch zu gestalten

HTML-Semantik scheint ein alltägliches Problem zu...

Einführung in die Verwendung der unbestimmten Eigenschaft des Kontrollkästchens

Wenn wir das Dialogfeld „Ordnereigenschaften“ in W...