Methode zum dynamischen Laden von Geojson basierend auf Vue+Openlayer

Methode zum dynamischen Laden von Geojson basierend auf Vue+Openlayer

Laden eines oder mehrerer Features

<Vorlage>
  <div id="Karte" style="Breite: 100vw; Höhe: 100vh"></div>
</Vorlage>
<Skript>
importiere "ol/ol.css";
importiere TileLayer aus „ol/layer/Tile“;
importiere VectorLayer aus „ol/layer/Vector“;
importiere VectorSource aus „ol/source/Vector“;
importiere XYZ aus „ol/source/XYZ“;
importiere { Karte, Ansicht, Funktion, ol } von "ol";
importiere { Stil, Strich, Füllung } aus "ol/style";
importiere { Polygon, MultiPolygon } aus "ol/geom";
 
importiere areaGeo aus "@/assets/chengdu.json";
 
Standard exportieren {
  Daten() {
    zurückkehren {
      Karte: {},
      Bereichsebene: {},
    };
  },
  montiert() {
    this.initMap(); //Kartenmethode initialisieren this.addArea(areaGeo); //Bereichsebenenmethode hinzufügen this.pointMove();
    dies.getFeatureByClick();
  },
  Methoden: {
    PunktBewegung() {
      // Lege den Stil der Maus über dem Vektorelement fest this.map.on("pointermove", (e) => {
        const isHover = this.map.hasFeatureAtPixel(e.pixel);
        this.map.getTargetElement().style.cursor = isHover ? "Zeiger" : "";
      });
    },
    getFeatureByClick() {
      this.map.on("klicken", (e) => {
        : Lassen Sie Features = this.map.getFeaturesAtPixel(e.pixel);
        diese.map.getView().fit(features[0].getGeometry(), {
          Dauer: 1500,
          Polsterung: [100, 100, 100, 100],
        });
      });
    },
    /**
     *Bereich festlegen */
    Bereich hinzufügen(geo = {}) {
      wenn (Object.keys(geo).length == 0 und geo.features.length == 0) zurückgeben;
 
      // Ebene festlegen this.areaLayer = new VectorLayer({
        Quelle: neue Vektorquelle ({
          Merkmale: [],
        }),
      });
      //Ebene hinzufügen this.map.addLayer(this.areaLayer);
 
      Lassen Sie Features = geo.features;
 
      für (lass i in Features) {
        lass Bereichsfeature = {};
 
        wenn (features[i].geometry.type == "MultiPolygon") {
          Bereichsfeature = neues Feature({
            Geometrie: neues MultiPolygon(features[i].geometry.coordinates),
          });
        } sonst wenn (features[i].geometry.type == "Polygon") {
          Bereichsfeature = neues Feature({
            Geometrie: neues Polygon (Features[i].Geometrie.Koordinaten),
          });
        }
        BereichFeature.setStyle(
          neuer Stil({
            füllen: neue Füllung({ Farbe: "#4e98f444" }),
            Strich: neuer Strich({
              Breite: 3,
              Farbe: [71, 137, 227, 1],
            }),
          })
        );
        BereichFeature.setProperties(features[i].properties);
        dies.areaLayer.getSource().addFeature(areaFeature);
      }
    },
    /**
     * Initialisiere die Karte */
    initMap() {
      diese.map = neue Map({
        Ziel: "Karte",
        Schichten:
          neue Kachelebene({
            Quelle: neues XYZ({
              URL: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
            }),
          }),
        ],
        Ansicht: neue Ansicht({
          Projektion: "EPSG:4326",
          Mitte: [103, 31],
          Zoom: 7,
        }),
      });
    },
  },
};
</Skript>

Dies ist das Ende dieses Artikels über das dynamische Laden von Geojson durch Vue+Openlayer. Weitere relevante Inhalte zum Laden von Geojson durch Vue Openlayer 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:
  • Beispielcode für die Verwendung von JsonView in Vue zum Anzeigen eines JSON-Baums
  • Verwenden von JSONP für domänenübergreifende Anforderungsschnittstellenvorgänge in Vue
  • Vue3.0-Methode zum Laden von JSON (nicht Ajax)
  • Die Verwendung von JSON in Vue zum Aktualisieren der Schnittstelle hat keinen Einfluss auf den Countdown
  • Beispiel für die Verwendung des JSONP-Plugins in Vue
  • Die zwei einfachsten Möglichkeiten, Vue mit JSON zu teilen

<<:  Detaillierte Erläuterung der Überwachung von Spaltenüberläufen ohne Primärschlüssel in MySQL-Tabellen

>>:  So starten Sie ein Java-Programm im Docker

Artikel empfehlen

Ändern Sie die MySQL-Datenbank-Engine in InnoDB

PS: Ich verwende hier PHPStudy2016 1. Stoppen Sie...

Verwendung der MySQL-Anweisung „truncate table“

Mit der Anweisung „Truncate table“ werden alle Da...

innerHTML-Anwendung

Blanks Blog: http://www.planabc.net/ Die Verwendu...

Tutorial zur Installation von Android Studio unter Ubuntu 19 und darunter

Aus Erfahrung weiß man, dass es eine gute Angewoh...

Vue3-Kompilierungsprozess - Quellcodeanalyse

Vorwort: Vue3 ist schon seit langem verfügbar. Vo...

Tutorial zur Installation und Deinstallation von Python3 unter Centos7

1. Installieren Sie Python 3 1. Installieren Sie ...

Detaillierte Erklärung der Linux-Systemverzeichnisse sys, tmp, usr, var!

Der Wachstumspfad vom Linux-Neuling zum Linux-Mei...

Detailliertes Tutorial zur Installation von CUDA9.0 auf Ubuntu16.04

Vorwort: Dieser Artikel basiert auf den Erfahrung...

Zusammenfassung der Vorteile von Vue3 gegenüber Vue2

Inhaltsverzeichnis 1. Warum brauchen wir vue3? 2....

So bedienen Sie das Kontrollkästchen auf einer HTML-Seite

Kontrollkästchen sind auf Webseiten sehr verbreit...

Samba-Serverkonfiguration unter Centos7 (tatsächlicher Kampf)

Samba Übersicht Samba ist eine kostenlose Softwar...

Natives JS zur Realisierung eines einfachen Schlangenspiels

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