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

Detaillierte Erläuterung der Komponentenentwicklung des Vue-Dropdown-Menüs

In diesem Artikelbeispiel wird der spezifische Co...

Ein kurzer Vortrag über die Variablenförderung in JavaScript

Inhaltsverzeichnis Vorwort 1. Welche Variablen we...

Zusammenfassung gängiger Toolbeispiele in MySQL (empfohlen)

Vorwort Dieser Artikel stellt hauptsächlich die r...

Zusammenfassung der speicherbezogenen Parameter von MySQL 8.0

Theoretisch entspricht der von MySQL verwendete S...

Detaillierte Erklärung zum Bereitstellen von H5-Spielen auf einem Nginx-Server

Auf dem Weg zur selbstlernenden Spieleentwicklung...

Analyse von MySQL-Lock-Wait- und Deadlock-Problemen

Inhaltsverzeichnis Vorwort: 1. Verstehen Sie Lock...

Eine kurze Diskussion über den Spaß von :focus-within in CSS

Ich glaube, einige Leute haben dieses Bild gesehe...

Detaillierte Erläuterung der DOM-Stileinstellungen in vier Reaktionskomponenten

1. Inline-Stile Um Inline-Stile zum virtuellen DO...

Dieser Artikel zeigt Ihnen, wie Sie mit CSS-Kombinationsselektoren spielen

CSS-Kombinationsselektoren umfassen verschiedene ...