Vue+Openlayer verwendet modify, um den gesamten Code des Elements zu ändern

Vue+Openlayer verwendet modify, um den gesamten Code des Elements zu ändern

Vue+Openlayer verwendet „modify“, um Elemente zu ändern. Die spezifischen Inhalte sind wie folgt:

importiere { Ändere } von "ol/interaction";

  1. Automatische Erfassung
  2. Punkte, Linien und Flächen können verändert werden. Sie müssen den zu ändernden Elementtyp nicht selbst deklarieren

Features direkt ändern

Kerncode:

 // Ändere den Feature-Kerncode modifyFeature() {
      this.modify = neue Ändern({
        Quelle: this.lineStringLayer.getSource(),
      });
      diese.map.addInteraction(diese.ändern);
    },

Vollständiger Code:

<Vorlage>
  <div id="Karte" style="Höhe: 100vh; Breite: 100vw"></div>
</Vorlage>
 
<Skript>
importiere "ol/ol.css";
importiere { Karte, Ansicht, Funktion } von "ol";
importiere { OSM, Vektor als Vektorquelle } aus "ol/source";
importiere { Vektor als Vektorebene, Kachel als Kachelebene } aus "ol/layer";
 
importiere { Punkt, Linienzug, Polygon } aus "ol/geom";
importiere { Ändere } von "ol/interaction";
Standard exportieren {
  Daten() {
    zurückkehren {
      Karte: {},
      Zeilenzeichenfolgeebene: {},
      ändern: {},
    };
  },
  erstellt() {},
  montiert() {
    dies.initMap();
    dies.addLayer();
    dies.modifyFeature();
  },
  berechnet: {},
  Methoden: {
    initMap() {
      diese.map = neue Map({
        Ziel: "Karte",
        Schichten:
          neue Kachelebene({
            Quelle: neues OSM(),
          }),
        ],
        Ansicht: neue Ansicht({
          Projektion: "EPSG:4326",
          Mitte: [104.2979180563, 30.528298024],
          Zoom: 18,
        }),
      });
    },
    addLayer() {
      this.lineStringLayer = neuer VektorLayer({
        Quelle: neue VectorSource(),
      });
      this.lineStringLayer.getSource().addFeature(
        neue Funktion({
          Geometrie: neuer LineString([
            [104.2979180563, 30.528298024],
            [104.2987389704, 30.527798338],
          ]),
        })
      );
      diese.map.addLayer(diese.lineStringLayer);
    },
    // Ändere den Feature-Kerncode modifyFeature() {
      this.modify = neue Ändern({
        Quelle: this.lineStringLayer.getSource(), //Quelle wird hier verwendet
      });
      diese.map.addInteraction(diese.ändern);
    },
  },
};
</Skript>

Darüber hinaus können Sie das Änderungsobjekt über this.modify.setActive(false) deaktivieren und den Aktivierungsstatus über this.modify.getActive() abrufen.

Wählen Sie zuerst die Funktion aus und ändern Sie sie dann

Kerncode:

Hinweis: Verwenden Sie hier unbedingt das Features-Attribut und nicht die Quelle! ! ! !

Funktion ändern() {
      this.modify = neue Ändern({
        //Hinweis: Verwenden Sie hier unbedingt das Features-Attribut und nicht die Quelle! ! ! !
        Funktionen: this.select.getFeatures(),
      });
      diese.map.addInteraction(diese.ändern);
    },

Vollständiger Code:

<Vorlage>
  <div id="Karte" style="Höhe: 100vh; Breite: 100vw"></div>
</Vorlage>
 
<Skript>
importiere "ol/ol.css";
importiere { Karte, Ansicht, Funktion } von "ol";
importiere { OSM, Vektor als Vektorquelle, XYZ } aus "ol/source";
importiere { Vektor als Vektorebene, Kachel als Kachelebene } aus "ol/layer";
 
Importieren Sie Select aus „ol/interaction/Select“.
 
importiere { Punkt, Linienzug, Polygon } aus "ol/geom";
importiere { Ändere } von "ol/interaction";
Standard exportieren {
  Daten() {
    zurückkehren {
      Karte: {},
      Zeilenzeichenfolgeebene: {},
      ziehen: {},
      ändern: {},
      wählen: {},
    };
  },
  erstellt() {},
  montiert() {
    dies.initMap();
    dies.pointerMove();
    dies.addLayer();
    dies.selectFeature();
    dies.modifyFeature();
  },
  berechnet: {},
  Methoden: {
    initMap() {
      diese.map = neue Map({
        Ziel: "Karte",
        Schichten:
          neue Kachelebene({
            Quelle: neues OSM(),
          }),
        ],
        Ansicht: neue Ansicht({
          Projektion: "EPSG:4326",
          Mitte: [104.2979180563, 30.528298024],
          Zoom: 18,
        }),
      });
    },
    ZeigerBewegung() {
      diese.map.on("Zeigerbewegung", (e) => {
        const isHover = this.map.hasFeatureAtPixel(e.pixel);
        this.map.getTargetElement().style.cursor = isHover ? "Zeiger" : "";
      });
    },
    addLayer() {
      this.lineStringLayer = neuer VektorLayer({
        Quelle: neue VectorSource(),
      });
      this.lineStringLayer.getSource().addFeature(
        neue Funktion({
          Geometrie: neuer LineString([
            [104.2979180563, 30.528298024],
            [104.2987389704, 30.527798338],
          ]),
        })
      );
      diese.map.addLayer(diese.lineStringLayer);
    },
    wähleFeature() {
      dies.select = neues Select();
      diese.map.addInteraction(diese.select);
    },
    Funktion ändern() {
      this.modify = neue Ändern({
        //Hinweis: Verwenden Sie hier unbedingt das Features-Attribut und nicht die Quelle! ! ! !
        Funktionen: this.select.getFeatures(),
      });
      diese.map.addInteraction(diese.ändern);
    },
  },
};
</Skript>

ps: Openlayers ändert Vektorfunktionen

Fügen Sie den folgenden Code in die Beispiele unter Demo ein, um ihn auszuführen

<!DOCTYPE html>
<html>
<Kopf>
<meta http-equiv="Inhaltstyp" content="text/html; charset=utf-8">
<meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1,0, Maximalmaßstab=1,0, Benutzerskalierung=0">
<meta name="apple-mobile-web-app-fähig" content="ja">
<title>Funktion ändern</title>
<link rel="stylesheet" href="../theme/default/style.css" rel="externes Nofollow" rel="externes Nofollow" type="text/css">
<link rel="stylesheet" href="style.css" rel="externes Nofollow" rel="externes Nofollow" type="text/css">
<style type="text/css">

</Stil>
<script src="../lib/OpenLayers.js"></script>
<Skripttyp="text/javascript">
Var-Maps, Vektoren, Steuerelemente;
Funktion init(){
Karte = neue OpenLayers.Map('Karte');
var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {Ebenen: 'basic'});
OpenLayers.Feature.Vector.style['Standard']['Strichbreite'] = '2';

Vektoren = neuer OpenLayers.Layer.Vector("Vektorebene");

var Geometrie = OpenLayers.Geometry.fromWKT(
'POLYGON((110 20,120 20,120 10,110 10,110 20),(112 17,118 18,118 16,112 15,112 17))'
);

Vektoren.addFeatures([neues OpenLayers.Feature.Vector(Geometrie)]);

map.addLayers([wms, Vektoren]);
//Grafiksteuerelemente zeichnen = neues OpenLayers.Control.DrawFeature(Vektoren,
OpenLayers.Handler.Polygon);

map.addControl(Steuerelemente);
steuert.aktivieren();
map.setCenter(neu OpenLayers.LonLat(110, 20), 3);
}

Funktion update() {
//Controls.deactivate() ändern;
Steuerungen = neues OpenLayers.Control.ModifyFeature(Vektoren);
map.addControl(Steuerelemente);
steuert.aktivieren();

}

Funktion deaktivieren(){
steuert.deaktivieren();
}

</Skript>
</Kopf>
<body onload="init()">
<div id="Karte" Klasse="kleineKarte"></div>
<div><input type = "button" value = "Ändern" onclick = "update()"/>
<input type = "button" value = "Abbrechen" onclick = "deactivate()"/>
</div>
</body>
</html>

Dies ist das Ende dieses Artikels über die Verwendung von „modify“ zum Ändern von Elementen in Vue+Openlayer. Weitere relevante Inhalte zum Ändern von Elementen in Vue Openlayer finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Vue+openlayers zeichnet Provinz- und Gemeindegrenzen
  • Openlayers zeichnet Verwaltungsabteilungen im Vue-Projekt
  • vue-openlayers realisiert den Popup-Box-Effekt für Kartenkoordinaten
  • Tutorial zur Integration von OpenLayers in Vue zum Laden von GeoJSON und Implementieren eines Popup-Fensters
  • Vue+Openlayers benutzerdefinierte Track-Animation
  • Vue verwendet OpenLayers, um bewegte Punktanimationen zu implementieren

<<:  Detaillierte Analyse des virtuellen Nginx-Hosts

>>:  Implementierungsmethode für horizontale und vertikale MySQL-Tabellenkonvertierungsvorgänge

Artikel empfehlen

JavaScript, um einen ausgefallenen Karusselleffekt zu erzielen

In diesem Artikel werden zwei Methoden zur Implem...

Detailliertes Tutorial zur Überwachung von Nginx/Tomcat/MySQL mit Zabbix

Inhaltsverzeichnis Zabbix überwacht Nginx Zabbix ...

CSS-Schreibformat, detaillierte Erklärung der Grundstruktur einer mobilen Seite

1. CSS-Schreibformat 1. Inline-Stile Sie können C...

Hinweise zum Upgrade auf mysql-connector-java8.0.27

Kürzlich wurde bei einem Online-Sicherheitsscan e...

Bringen Sie Ihnen bei, wie Sie coole Barcode-Effekte erstellen

Stellungnahme : In diesem Artikel erfahren Sie, w...

Einführung in häufig verwendete MySQL-Befehle in der Linux-Umgebung

Geben Sie den MySQL-Befehl ein: mysql -u+(Benutze...

Dieser Artikel hilft Ihnen, den Lebenszyklus in Vue zu verstehen

Inhaltsverzeichnis 1. vorErstellen & erstellt...

Mehrere Lösungen zum Vergessen des MySQL-Passworts

Lösung 1 Deinstallieren Sie vollständig und lösch...

Navicat-Remoteverbindung zur MySQL-Implementierungsschritteanalyse

Vorwort Ich glaube, dass jeder auf einem Remote-S...

js native Karussell-Plugin-Produktion

In diesem Artikel wird der spezifische Code für d...

Beispiel zur Optimierung der MySQL-Einfügeleistung

MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...

Installieren Sie eine virtuelle Python-Umgebung in Ubuntu 18.04

Nur als Referenz für Python-Entwickler, die Ubunt...