Installations- und Verwendungsschritte für vue-amap

Installations- und Verwendungsschritte für vue-amap

Ich habe zuvor die Verwendung des asynchronen Ladens der Amap-API erläutert. Jetzt werde ich die Verwendung von vue-amap aufzeichnen.

vue-amap ist eine Open-Source-Kartenkomponente basierend auf Vue 2.0 und Amap, entwickelt von Ele.me. Der Datenstatus ist einseitig an den Kartenstatus gebunden, und Entwickler müssen sich nicht um die spezifischen Vorgänge der Karte kümmern.

Offizielle Dokumentation: https://elemefe.github.io/vue-amap/

Hier sind die Schritte:

1. npm-Installation

npm installiere vue-amap --save

Wenn Sie CDN verwenden, können Sie derzeit die neueste Version der Ressourcen über unpkg.com/vue-amap beziehen.

<script src="https://unpkg.com/vue-amap/dist/index.js"></script>

2. Anwendungsfall

Beschreibung der Instanzanforderungen: Suchen und wählen Sie eine Adresse aus. Nach der Auswahl lokalisiert die Karte die Adresse, ermittelt Längen- und Breitengrad und trägt diese automatisch in das Eingabefeld unten ein.

Hinweis: Das im Beispiel verwendete Framework ist ElementUI und seine Formularkomponenten sind relativ einfach zu verwenden.

Implementierungsschritte:

(1) Nach der Installation stellen Sie in main.js Folgendes ein:

importiere VueAMap von „vue-amap“;
Vue.use(VueAMap);
// vue-amap initialisieren
VueAMap.initAMapApiLoader({
  key: "dein Schlüssel", //Schreibe hier den Schlüssel der Amap, für die du dich beworben hast
  Plugin: ["AMap.Autocomplete", "AMap.Geocoder", "AMap.Geolocation"],
  Version: "1.4.15",
  uiVersion: "1.1"
});

(2) Definieren Sie die Kartensuchkomponente base/mapSearch/baseMapSearch.vue

<Vorlage>
  <div>
    <div Klasse="Suchfeld">
      <el-Eingabe
        v-model="Suchschlüssel"
        Typ="Suche"
        id="Suche"
        Platzhalter="Bitte geben Sie die genaue Adresse ein"
      ></el-Eingabe>
      <!--<button @click="searchByHand">Suchen</button>-->
      <div Klasse="tip-box" id="searchTip"></div>
    </div>
    <!--
      amap-manager: Kartenverwaltungsobjekt vid: ID des Kartencontainerknotens
      zooms: Der Zoomstufenbereich der Kartenanzeige. Auf dem PC ist der Standardbereich [3,18] und der Wertebereich [3-18]. Auf Mobilgeräten ist der Standardbereich [3-19] und der Wertebereich [3-19].
      center: Koordinatenwert des Mittelpunkts der Karte plugin: von der Karte verwendetes Plugin events: events -->
    <div Klasse="amap-box">
      <el-amap
        :amap-manager="amapManager"
        :vid="'amap-vue'"
        :zoom="Zoom"
        :plugin="Plugin"
        :mitte="Mitte"
        :events="Ereignisse"
      >
        <!-- Tags -->
        <el-amap-marker
          v-for="(Markierung, Index) in Markierungen"
          :position="Markierung"
          :Schlüssel="Index"
        ></el-amap-marker>
      </el-amap>
    </div>
  </div>
</Vorlage>
<Skript>
importiere { AMapManager, lazyAMapApiLoaderInstance } von „vue-amap“;
let amapManager = neuer AMapManager();
Standard exportieren {
  Requisiten: ["Stadt", "Wert", "Längengrad", "Breitengrad", "isEdit"],
  Daten() {
    lass self = dies;
    zurückkehren {
      Adresse: null,
      Suchbegriff: "",
      amapManager,
      Markierungen: [],
      Suchoption: {
        Stadt: diese.Stadt ? diese.Stadt : "National",
        Stadtgrenze: wahr
      },
      Mitte: [121.329402, 31.228667],
      Zoom: 17,
      Länge: 0,
      Breite: 0,
      geladen: falsch,
      Ereignisse: {
        init() {
          lazyAMapApiLoaderInstance.load().then(() => {
            self.initSearch();
          });
        },
        // Klicken Sie hier um die Adressdaten abzurufen click(e) {
          selbst.marker = [];
          lass { lng, lat } = e.lnglat;
          selbst.lng = lng;
          selbst.lat = lat;
          selbst.Mitte = [Länge, Breite];
          selbst.Markierungen.drücken([lng, lat]);
          // Dies erfolgt über das Amap SDK.
          let geocoder = new AMap.Geocoder({
            Radius: 1000,
            Erweiterungen: „alle“
          });
          geocoder.getAddress([lng, lat], Funktion(Status, Ergebnis) {
            if (status === "abgeschlossen" && result.info === "OK") {
              if (Ergebnis && Ergebnis.regeocode) {
                selbst.Adresse = Ergebnis.regeocode.formatierteAdresse;
                self.Suchschlüssel = Ergebnis.Regeocode.formatierteAdresse;
                self.$emit("updateLocation", Länge, Breite, self.Suchschlüssel);
                selbst.$nächsterTick();
              }
            }
          });
        }
      },
      // Einige Tool-Plugins Plugin: [
        {
          // Position pName: "Geolokalisierung",
          Ereignisse: {
            init(o) {
              // o ist die Instanz des Amap-Positionierungs-Plugins o.getCurrentPosition((status, result) => {
                if (Ergebnis && Ergebnis.Position) {
                  wenn (selbst.istBearbeiten) {
                    // Längengrad festlegen self.lng = self.longitude;
                    //Dimension festlegen self.lat = self.latitude;
                    // Koordinaten festlegen self.center = [self.longitude, self.latitude];
                    self.markers.push([selbst.Länge, selbst.Breitengrad]);
                  } anders {
                    // Längengrad festlegen self.lng = result.position.lng;
                    //Dimension festlegen self.lat = result.position.lat;
                    // Koordinaten festlegen self.center = [self.lng, self.lat];
                    self.markers.push([self.lng, self.lat]);
                  }
                  // laden
                  selbst geladen = wahr;
                  //Nachdem die Seite gerendert wurde self.$nextTick();
                }
              });
            }
          }
        }
      ]
    };
  },
  erstellt() {
    wenn (dieser.Wert) {
      dieser.Suchschlüssel = dieser.Wert;
      diese.Adresse = dieser.Wert;
    }
    wenn (diese.Länge && diese.Breite) {
      dies.lng = dies.Längengrad;
      dies.lat = diese.Breitengrad;
      dieses.Zentrum = [diese.Länge, diese.Breite];
      dies.markers.push([diese.Länge, diese.Breite]);
    }
  },
  Methoden: {
    // Nach Auswahl einer Adresse automatisch in der Nähe der aktuellen Adresse lokalisieren updateAddress(value, longitude, latitude) {
      this.searchKey = Wert;
      diese.Adresse = Wert;
      this.lng = Längengrad;
      this.lat = Breitengrad;
      this.center = [Längengrad, Breitengrad];
      this.markers.push([Längengrad, Breitengrad]);
    },
    initSearch() {
      lass vm = dies;
      lass map = this.amapManager.getMap();
      AMapUI.loadUI(["misc/PoiPicker"], Funktion(PoiPicker) {
        let poiPicker = neuer PoiPicker({
          Eingabe: "Suche",
          OrtSuchoptionen: {
            Karte: Karte,
            Seitengröße: 10
          },
          suggestContainer: "Suchtipp",
          searchResultsContainer: "Suchtipp"
        });
        vm.poiPicker = poiPicker;
        // Auf Informationen zum ausgewählten POI warten poiPicker.on("poiPicked", function(poiResult) {
          Lassen Sie Quelle = poiResult.source;
          lass poi = poiResult.item;
          wenn (Quelle !== "Suche") {
            poiPicker.searchByKeyword(poi.name);
          } anders {
            poiPicker.clearSearchResults();
            vm.marker = [];
            sei lng = poi.location.lng;
            lass lat = poi.location.lat;
            let Adresse = poi.name; // poi.Stadtname + poi.Anzeigenname + poi.name
            vm.center = [Länge, Breite];
            vm.markers.push([lng, lat]);
            vm.lng = lng;
            vm.lat = lat;
            vm.address = Adresse;
            vm.searchKey = Adresse;
            vm.$emit("updateLocation", Länge, Breite, vm.searchKey);
          }
        });
      });
    },
    sucheNachHand() {
      wenn (dieser.Suchschlüssel !== "" und dieser.poiPicker) {
        dies.poiPicker.searchByKeyword(dieses.searchKey);
      }
    }
  }
};
</Skript>
<style lang="stylus">
.Suchfeld {
  Rand oben: 6px;
  Breite: 100 %;
}
.Suchfeldeingabe {
  Polsterung: 0 15px;
  Breite: 100 %;
  Höhe: 32px;
  Zeilenhöhe: 32px;
  Farbe: #606266;
  Rand: 1px durchgezogen #dcdfe6;
  Rahmenradius: 4px;
}
.Suchfeld Eingabe:Fokus {
  Rahmenfarbe: #409eff;
  Umriss: 0;
}
.Suchfeldeingabe::-WebKit-Eingabeplatzhalter {
  Farbe: #c0c4cc;
}
.tip-box {
  Breite: 100 %;
  maximale Höhe: 280px;
  Position: absolut;
  oben: 72px;
  Z-Index: 10000;
  Überlauf-y: automatisch;
  Hintergrundfarbe: #fff;
}
</Stil>
<Stil>
.amap-ui-poi-picker-sugg,
.amap_lib_placeSearch {
  Rand: 1px durchgezogen #eee;
  Rahmenradius: 4px;
}
.amap-box {
  Höhe: 200px;
}
</Stil>

Der Stil hier verwendet einen Stift und Sie können andere Stile selbst konvertieren.

(3) Verwenden Sie die Kartensuchkomponente in der Komponente. Hier nehmen wir das Popup-Fenster als Beispiel.

<Vorlage>
  <el-dialog
    :title="Titel"
    :visible.sync="sichtbar"
    :before-close="HandleSchließen"
    Breite="600px"
    An den Hauptteil anhängen
    :Schließen bei Klick-Modal="false"
    :Schließen beim Drücken von Escape="false"
  >
    <div Klasse="Formular-Info">
      <el-form
        :model="Formular"
        ref="Formular"
        :Regeln="Regeln"
        Größe="klein"
        Beschriftungsbreite = "110px"
      >
        <el-form-item label="Adresse auswählen" prop="Adresse">
          <Basiskartensuche
            ref="Kartensuche"
            :Stadt="Formular.Stadt"
            :Wert="Formular.Adresse"
            :Längengrad="form.addLon"
            :Breitengrad="form.addLat"
            :isEdit="istEdit"
            @updateLocation="Standort aktualisieren"
          />
        </el-form-item>
        <el-Zeile>
          <el-col :span="12">
            <el-form-item prop="addLon" label="Längengrad">
              <el-Eingabe
                v-Modell.Nummer="form.addLon"
                :maximale Länge="15"
                Platzhalter="Bitte Längengrad eingeben"
              ></el-Eingabe>
            </el-form-item>
          </el-col>
          <el-col :span="12" class="right-label-form-item">
            <el-form-item prop="addLat" label="Breitengrad">
              <el-Eingabe
                v-Modell.Nummer="form.addLat"
                :maximale Länge="15"
                Platzhalter="Bitte Breitengrad eingeben"
              ></el-Eingabe>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </div>
  </el-dialog>
</Vorlage>
<Skript>
importiere BaseMapSearch aus "../base/mapSearch/baseMapSearch";
Standard exportieren {
    Requisiten: ["sichtbar", "isEdit", "Detail"],
    Komponenten:
      BaseMapSearch
    },
    Daten() {
        zurückkehren {
            Titel: "Adresse hinzufügen",
            bilden: {
                Adresse: "",
                hinzufügenLon: "",
                addLat: ""
            },
            Regeln:
                Adresse:
                  {
                    erforderlich: wahr,
                    Meldung: "Bitte geben Sie die Adresse ein",
                    Auslöser: ["verwischen", "ändern"]
                  }
                ],
                addLat: [
                  {
                    erforderlich: wahr,
                    Meldung: "Bitte geben Sie den Breitengrad ein",
                    Auslöser: ["verwischen", "ändern"]
                  }
                ],
                hinzufügenLon: [
                  {
                    erforderlich: wahr,
                    Meldung: "Bitte Längengrad eingeben",
                    Auslöser: ["verwischen", "ändern"]
                  }
                ],
            }
        };
    },
    erstellt() {
      wenn (dies.istBearbeiten) {
        diese.initForm();
      }
    },
    Methoden: {
        // Initialisiere das Formular initForm() {
          this.title = "Adresse ändern";
          wenn (dieses.detail) {
            dieses.Formular = { ...dieses.Detail };
          }
        },
        // Kartensuchstandort updateLocation(lng, lat, address) {
          diese.form.addLon = lng;
          this.form.addLat = lat;
          this.form.address = Adresse;
        },
        handleClose() {
          dies.$emit("update:sichtbar", false);
        }
    }
};
</Skript>

(4) Wenn zu diesem Zeitpunkt ESlint im Projekt verwendet wird, wird ein Fehler gemeldet, dass AMap und AMapUI nicht definiert sind. Wir müssen die Globals-Eigenschaft in der Datei .eslintrc.js definieren:

modul.exporte = {
    // ...
    Globale:
      AMap: falsch,
      AMapUI: falsch
    }
};

Wenn dies geschrieben wird, ist der Effekt wie folgt:

Dies ist das Ende dieses Artikels über die Installation und Verwendung von vue-amap. Weitere relevante Inhalte zur Installation und Verwendung von vue-amap finden Sie in früheren Artikeln auf 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:
  • Der vollständigste vue vue-amap verwendet das Amap-Plugin, um Beispielcode für Polygonbereiche zu zeichnen
  • vue verwendet die Amap-Komponente zur Prozessanalyse

<<:  Docker Consul-Übersicht und Schritte zum Erstellen einer Clusterumgebung (grafische Erklärung)

>>:  Thumbnail-Hover-Effekt mit CSS3 implementiert

Artikel empfehlen

Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors

[Verwendung und Funktion des MySQL-Cursors] Beisp...

Beispielcode zur Implementierung einer Hohlmaskenebene mit CSS

Inhalt dieses Artikels: Seitenhohlmaskenebene, Se...

Nginx: Ein Domänenname für den Zugriff auf mehrere Projekte – Methodenbeispiel

Hintergrund Kürzlich stieß ich bei der Bereitstel...

So verwenden Sie den VIM-Editor unter Linux

Als leistungsstarker Editor mit umfangreichen Opt...

Einführung in das Enctype-Attribut des Form-Tags und seine Anwendungsbeispiele

Enctype: Gibt den Kodierungstyp an, der vom Browse...

Detaillierte Erläuterung des Mysql-Kommunikationsprotokolls

1.Mysql-Verbindungsmethode Um das MySQL-Kommunika...

So implementieren Sie das Rasterlayout mit Intervallen perfekt auf der Seite

Typische Layoutbeispiele Wie im obigen Bild gezei...

Diskussion zu Bildpfadproblemen in CSS (dasselbe Paket/anderes Paket)

In CSS-Dateien müssen Sie manchmal einen Hintergru...

So erstellen Sie Ihr eigenes Docker-Image und laden es auf Dockerhub hoch

1. Registrieren Sie zunächst Ihr eigenes Dockerhu...

So dockerisieren Sie eine Python-Django-Anwendung

Docker ist ein Open-Source-Projekt, das Entwickle...

So installieren und konfigurieren Sie Redis in CentOS7

Einführung Es ist nicht nötig, Redis im Detail vo...

Detaillierte Erklärung zur Verwendung des Grep-Befehls in Linux

1. Offizielle Einführung grep ist ein häufig verw...