React-Implementierungsbeispiel mit Amap (react-amap)

React-Implementierungsbeispiel mit Amap (react-amap)

Die PC-Version von React wurde für die Verwendung von Amap umgestaltet. Nach einer Suche nach Informationen bin ich auf ein Map-Plugin namens react-amap gestoßen, das für React gekapselt ist. Offizielle Website: https://elemefe.github.io/react-amap/components/map. Wenn Sie interessiert sind, können Sie sich die API ansehen.

react-amap-installation

1. Verwenden Sie zur Installation npm, aktuell Version 1.2.8:

cnpm ich reagiere-amap

2. Verwenden Sie SDN direkt zur Einführung

<script src="https://unpkg.com/[email protected]/dist/react-amap.min.js"></script>

React-amap-Nutzung

importiere React, {Component} von 'react'
importiere {Map,Marker} aus 'react-amap'
const mapKey = '1234567809843asadasd' //Sie müssen es auf der offiziellen Website von Amap beantragen. class Address extends Component {
	Konstruktor (Requisiten) {
        super (Requisiten)
        dieser.Zustand = {  
        }
    }
	machen(){
		zurückkehren (
			<div Stil={{Breite: '100%', Höhe: '400px'}}>
				<Karte amapkey={mapKey} 
				     zoom={15}></Karte>
			</div>
		)
	}
}

Standardadresse exportieren

In diesem Fall wird eine einfache Karte initialisiert.

Bildbeschreibung hier einfügen

Im eigentlichen Entwicklungsprozess werden Sie mit komplexeren Nutzungsszenarien konfrontiert. Sie müssen beispielsweise Punkte markieren, die Karte vergrößern und verkleinern, den aktuellen Standort lokalisieren, nach Standorten suchen usw. Die Anforderungen sind in etwa wie in der folgenden Abbildung dargestellt:

Bildbeschreibung hier einfügen

In diesem Fall ist es notwendig, die Konzepte von Plug-Ins und Komponenten einzuführen.
Symbolleiste, Skalierungs-Plug-In

<Kartenplugins={["ToolBar", 'Scale']}></Map>

Markierungskartenmarkierung

<Karte>
	<Markierungsposition={['lng','lat']}></Markierung>
</Karte>

InfoWindow-Formularkomponente

<Karte>
	<InfoFenster
            Position = {dieser.Zustand.Position}
            sichtbar = {dieser.Zustand.sichtbar}
            istCustom={false}
            Inhalt={html}
            Größe={diese.Zustandsgröße}
            Offset = {dieser.Zustand.Offset}
            Ereignisse={this.windowEvents}
          />
</Karte>

Das erstellte Ereignis wird verwendet, um erweiterte Nutzungsanforderungen zu erfüllen. Es wird aufgerufen, nachdem die native Amap-Instanz erfolgreich erstellt wurde. Der Parameter ist die erstellte Instanz. Nachdem Sie die Instanz erhalten haben, können Sie die Instanz gemäß der nativen Amap-Methode betreiben:

const Ereignisse = {
    erstellt: (Instanz) => { console.log(instance.getZoom())},
    click: () => { console.log('Sie haben auf die Karte geklickt') }
}
<Kartenereignisse={Ereignisse} />

Implementieren Sie einen komplexeren Code für die Adresssuche, Adressmarkierung und umgekehrte Geografieanalyse:

importiere React, {Komponente} von 'react'
importiere { Modal, Input} von 'antd'
Stile aus „./index.scss“ importieren
Klassennamen aus „Klassennamen“ importieren
importiere { Map, Marker, InfoWindow} aus 'react-amap'
Marker aus „SRC/statics/images/signin/marker2.png“ importieren

const mapKey = "42c177c66c03437400aa9560dad5451e"

Klasse Adresse erweitert Komponente {
    Konstruktor (Requisiten) {
        super(Requisiten)
        dieser.Zustand = {
            signAddrList:{
                Name:'',
                Adresse:'',
                Längengrad: 0,
                Breitengrad: 0
            },
            Geocoder:'',
            Suchinhalt:'',
            isChose:false
        }
    }

    //Daten ändern allgemeine Methode (einzelne Ebene)

    changeData = (Wert, Schlüssel) => {
        let { signAddrList } = dieser.Zustand
        signAddrList[Schlüssel] = Wert
        dies.setState({
            signAddrList:signAddrList
        })
    }

    placeSearch = (e) => {
        dies.setState({searchContent:e})
    }

    suchOrt = (e) => {
        console.log(1234,e)
    }





    componentDidMount() {
    
    }

    rendern() {
        let { changeModal, saveAddressDetail} = this.props
        let { signAddrList } = dieser.Zustand
        const wähleAdresse = {
            erstellt:(e) => {
                lass auto
                Geocoder
                Fenster.AMap.plugin('AMap.Autocomplete',() => {
                    auto = neues Fenster.AMap.Autocomplete({input:'tipinput'});
                })

                Fenster.AMap.plugin(["AMap.Geocoder"],Funktion(){
                    Geocoder = neue AMap.Geocoder({
                        radius:1000, //Mit den bekannten Koordinaten als Mittelpunkt und radius als Radius werden die Sonderziele und Straßeninformationen innerhalb des Bereichs zurückgegeben. Erweiterungen: „alle“ //Gibt die Adressbeschreibung und die Sonderziele und Straßeninformationen in der Nähe zurück. Der Standardwert ist „Basis“.
                    });
                });

                Fenster.AMap.plugin('AMap.PlaceSearch',() => {
                    let place = neues Fenster.AMap.PlaceSearch({})
                    lass _dies = dies
                    window.AMap.event.addListener(auto,"select",(e) => {
                        Ort.Suche(e.poi.name)
                        geocoder.getAddress(e.poi.location,Funktion (Status,Ergebnis) {
                            wenn (Status === 'abgeschlossen'&&Ergebnis.regeocode) {
                                let Adresse = Ergebnis.regeocode.formattedAddress;
                                let data = result.regeocode.addressComponent
                                let name = data.township + data.street + data.streetNumber
                                _this.changeData(Adresse,'Adresse')
                                _this.changeData(Name,'Name')
                                _this.changeData(e.poi.location.lng,'Längengrad')
                                _this.changeData(e.poi.location.lat,'Breitengrad')
                                _this.setState({isChose:true})
                            }
                        })
                    })
                })
            },
            klick:(e) => {
                const _this = dies
                var Geocoder
                var infoWindow
                var lnglatXY = neue AMap.LngLat(e.lnglat.lng,e.lnglat.lat);
                let content = '<div>Positionierung…</div>'

                Fenster.AMap.plugin(["AMap.Geocoder"],Funktion(){
                    Geocoder = neue AMap.Geocoder({
                        radius:1000, //Mit den bekannten Koordinaten als Mittelpunkt und radius als Radius werden die Sonderziele und Straßeninformationen innerhalb des Bereichs zurückgegeben. Erweiterungen: „alle“ //Gibt die Adressbeschreibung und die Sonderziele und Straßeninformationen in der Nähe zurück. Der Standardwert ist „Basis“.
                    });
                    geocoder.getAddress(e.lnglat,Funktion (Status,Ergebnis) {
                        wenn (Status === 'abgeschlossen'&&Ergebnis.regeocode) {
                            let Adresse = Ergebnis.regeocode.formattedAddress;
                            let data = result.regeocode.addressComponent
                            let name = data.township + data.street + data.streetNumber
                          
                            _this.changeData(Adresse,'Adresse')
                            _this.changeData(Name,'Name')
                            _this.changeData(e.lnglat.lng,'Längengrad')
                            _this.changeData(e.lnglat.lat,'Breitengrad')
                            _this.setState({isChose:true})
                        }
                    })
                });
                
            }
        }
        zurückkehren (
            <div>
                <Modal sichtbar={true}
                       Titel="Bürostandort"
                       zentriert={true}
                       beiAbbrechen={() => changeModal('addressStatus',0)}
                       onOk = {() => Adressdetail speichern(signAddrList)}
                       Breite={700}>
                    <div Klassenname={styles.serach}>
                        <Eingabe-ID="tipinput"
                               Klassenname={styles.searchContent}
                               beiÄnderung={(e) => diese.Ortssuche(e.Ziel.Wert)}
                               onKeyDown={(e) => dieser.Suchplatz(e)} />
                        <i className={classname(styles.serachIcon,"iconfont icon-weibiaoti106")}></i>
                    </div>
                    <div className={styles.mapContainer} id="Inhalt" >
                        {
                            dieser.Zustand.istAusgewählt ? <Map amapkey={mapKey}
                                                      plugins={["ToolBar", 'Skalieren']}
                                                      Ereignisse={Adresse auswählen}
                                                      Zentrum = { [ signAddrList.Länge, signAddrList.Breitengrad] }
                                                      zoom={15}>
                                <Markierungsposition={[signAddrList.longitude,signAddrList.latitude]}/>
                            </Map> : <Map amapkey={mapKey}
                                          plugins={["ToolBar", 'Skalieren']}
                                          Ereignisse={Adresse auswählen}
                                          zoom={15}>
                                <Markierungsposition={[signAddrList.longitude,signAddrList.latitude]}/>
                            </Karte>
                        }
                    </div>
                    <div className="mar-t-20">Detaillierte Adresse:
                        {signAddrList.addr}
                    </div>
                </Modal>
            </div>
        )
    }
}

Standardadresse exportieren

Dies ist das Ende dieses Artikels über das Implementierungsbeispiel zur Verwendung von Amap in React (react-amap). Weitere relevante Inhalte zu React 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:
  • So verwenden Sie die Amap-API in einer Java-Umgebung
  • Benutzerdefiniertes Popup-Fenster für Android Gaode-Kartenmarkierungen
  • Beispiel für den Mehrpunkt-Routenplanungsprozess des WeChat-Applets Amap – detaillierte Erläuterung
  • Detaillierte Schritte zur Integration von SpringBoot mit Mybatis, um die Amap-Positionierung zu realisieren und Daten in der Datenbank zu speichern
  • So verwenden Sie Amap im Front-End Vue
  • Das WeChat-Applet implementiert eine Wetterkomponente (dynamische Effekte) basierend auf der Amap-API
  • vue + Amap realisiert Kartensuche und Klickpositionierungsvorgang
  • React+Amap ermittelt Breiten- und Längengrad in Echtzeit und lokalisiert die Adresse

<<:  Nginx-Reverseproxy und Lastausgleichspraxis

>>:  MySQL-Grundanweisungen zum Hinzufügen, Löschen, Ändern und Abfragen

Artikel empfehlen

Webprojektentwicklung VUE-Mischungs- und Vererbungsprinzip

Inhaltsverzeichnis Mischen Mixin-Hinweis (doppelt...

WeChat-Applet implementiert ein einfaches Würfelspiel

In diesem Artikel wird der spezifische Code des W...

Vier Modi zum Öffnen und Schließen von Oracle

>1 Starten Sie die Datenbank Geben Sie im cmd-...

So verwenden Sie JSX in Vue

Was ist JSX JSX ist eine Syntaxerweiterung von Ja...

Implementierung der Leistungsoptimierung des Element-Shuttle-Frames

Inhaltsverzeichnis Hintergrund Lösung Neue Fragen...

VMware vSAN - Zusammenfassung der ersten Schritte

1. Hintergrund 1. Stellen Sie kurz den Shared Sto...

Zehn wichtige Fragen zum Erlernen der Grundlagen von Javascript

Inhaltsverzeichnis 1. Was ist Javascript? 2. Was ...

Detaillierte Erklärung zum Ersetzen in ein Beispiel in MySQL

Detaillierte Erklärung zum Ersetzen in ein Beispi...

Lernen Sie MySQL-Datenbanken in einer Stunde (Zhang Guo)

Inhaltsverzeichnis 1. Datenbankübersicht 1.1 Entw...

Popularisierung der Theorie – Benutzererfahrung

1. Konzeptanalyse 1: UE User Experience <br /&...