1. Führen Sie eine vorläufige Konfiguration gemäß dem offiziellen Tutorial von Amap durch. Schauen wir uns als nächstes zunächst die Renderings an: 1. Initialisieren Sie die KarteNachdem der Kartencontainer erstellt wurde, müssen während der Initialisierung einige Standardparameter konfiguriert werden. Hier sind einige häufig verwendete. Sie können auf die API verweisen, um weitere Effekte hinzuzufügen. DOM: <div id='Kartencontainer'> //Map-Container</div> //Definiere eine Kartenklasse class GeoMap { Konstruktor() { dies.el = "Kartencontainer" this.defaultConfig = { //Standardkonfiguration zoom: 16, //Standardzoomstufe touchZoomCenter: 1, //Bei Zoomstufe 1 wird der Kartenmittelpunkt zum Zoomen verwendet resizeEnable: true, //Größenänderung des Kartencontainers überwachen doubleClickZoom: true, //Doppelklicken, um in die Karte zu zoomen} this.map = null // Karteninstanz this.mapMove = false // Bewegt sich die Karte? this.centerPixel = { y: '-999', x: '-999' } // Standardstandort des Punkts } // Initialisiere die Karte initFn() { dies.createMap() // ... } // Erstelle eine Instanz createMap() { diese.map = neue AMap.Map(diese.el, diese.defaultConfig) // Fügen Sie der Karte Ihren bevorzugten Stil (Hintergrundfarbe) hinzu diese.map.setMapStyle('amap://styles/28d5c5df182464d14316bfa41383096c') } // ... } exportiere standardmäßig neue GeoMap() 2. KartenpunkteZeichnen Sie zunächst einen Mittelpunkt auf der Karte. Der zu erzielende Effekt ist:
Die Kartenbox wird als übergeordnetes Element verwendet und absolut positioniert, um den ersten Punkt zu erreichen. Dom: <div id='map_container'> //Kartencontainer<div id='center_icon' style={{left: `${instance.centerPixel.x}px`, top: `${instance.centerPixel.y}px` }}> <img src='扎点图片' /> // Am Ende des Artikels gibt es eine Einführung in die 扎点-Animation</div> </div> css: #map_container { biegen: 1; Position: relativ; #center_icon { Position: absolut; Z-Index: 101; >img{ Breite: 52px; Höhe: 64px; // --------Der folgende Code wird unten ausführlich vorgestellt--------- Position: relativ; oben: -64px; links: -26px; } } } Dann müssen Sie die linken und oberen Werte des Punkts festlegen. Wie kann der Pixelwert des Punkts dynamisch festgelegt werden? Hier verwenden wir die Gaode-API, getCenter(), um die Längen- und Breitengradkoordinaten des Kartenmittelpunkts abzurufen, lngLatToContainer(), um die Längen- und Breitengradkoordinaten der Karte in die Pixelkoordinaten des Kartencontainers umzuwandeln setCenterIcon() { lass lnglat = this.map.getCenter() let pixel = this.map.lngLatToContainer(lnglat) this.centerPixel = Pixel } Das gepunktete Bild muss relativ auf seiner eigenen Höhe oben positioniert werden: - seiner eigenen Höhe links: - seiner eigenen Breite/2. Der Grund ist: Der Positionierungspunkt befindet sich von der oberen linken Ecke des Felds zur Mitte (gepunktetes Feld), daher müssen wir das (gepunktete Feld) an die Position (durchgezogenes Feld) verschieben, damit die Position des Punkts genau ist. Bitte beachten Sie die folgende Abbildung: 3. Positionierung aktivierenMüssen umgesetzt werden:
Beide werden über die API implementiert, was relativ einfach ist. Wenn die Positionierung fehlschlägt, wird eine chinesische Eingabeaufforderung zurückgegeben Standort abrufen() { const mapError = neue Karte([ ['Abrufen des IP-Standorts ist fehlgeschlagen.', 'IP-genaue Ortung ist fehlgeschlagen'], ['Browser unterstützt keine HTML5-Geolokalisierung.', 'Browser unterstützt keine native Positionierungsschnittstelle'], ['Geolokalisierungsberechtigung verweigert.', 'Der Browser verbietet Standortanfragen in nicht sicheren Domänen'], ['Zeitüberschreitung bei Geolokalisierung abrufen.', 'Zeitüberschreitung bei Browserstandort'], ['Die Geolokalisierung konnte nicht abgerufen werden.', 'Die Positionsbestimmung ist fehlgeschlagen'] ]) dieses.map.plugin('AMap.Geolocation', () => { const geolocation = neue AMap.Geolocation({ enableHighAccuracy: true, // Gibt an, ob eine hochpräzise Positionierung verwendet werden soll. timeout: 30000, // Positionierung nach n Sekunden beenden. showButton: false, // Positionierungsschaltfläche anzeigen. showMarker: true, // Nach erfolgreicher Positionierung Punktmarkierung an der lokalisierten Position anzeigen. showCircle: false, // Nach erfolgreicher Positionierung einen Kreis verwenden, um den Genauigkeitsbereich der Positionierung anzuzeigen. panToLocation: true, // Nach erfolgreicher Positionierung die lokalisierte Position als Mittelpunkt der Karte verwenden --- zoomToAccuracy: true, //Passe das Sichtfeld der Karte so an, dass die Positionierungsposition und der Genauigkeitsbereich sichtbar sind}) this.map.setZoom(16) // Legt das anfängliche Zoomverhältnis fest, wenn nach einer Änderung des Zoomverhältnisses die Position geändert wird. this.map.addControl(geolocation) // Steuerelement hinzufügen geolocation.getCurrentPosition() // Automatische Positionierung beim Aufrufen der Seite AMap.event.addListener(geolocation, 'complete', (result) => { // Hier keine Daten abrufen, da die zurückgegebenen Breiten- und Längengrade sowie die genaue Adresse große Abweichungen aufweisen --- weiter unten finden Sie eine Einführung zum Abrufen der genauen Adresse}) AMap.event.addListener(geolocation, 'error', (err) => { // Fehlermeldung für fehlgeschlagene Positionierung let msg = mapError.get(err.message) || err.message Konsole.log(Nachricht); }) }) } 4. Kartenänderungen überwachenÜberwachen Sie Kartenänderungen durch API-Aufrufe: Verschieben, Verschieben des Endes, Zoomen, Ziehen usw. mapMove() { // * Karte verschieben this.map.on('mapmove', () => { this.mapMove = falsch }) // * Kartenbewegung endet this.map.on('moveend', () => { this.mapMove = wahr this.getCenterAddress() // Adresse abrufen --- weitere Details folgen weiter unten}) } 5. Holen Sie sich die detaillierte AdresseNach dem Verschieben der Karte wird die detaillierte Adresse über die API abgerufen. Lassen Sie uns zunächst über diese beiden APIs sprechen:
🤔Es liegt auf der Hand, dass die zweite Methode genauer sein sollte als die erste, aber nach vielen Tests ist die erste genauer. Die beiden Methoden können kompatibel gemacht werden. Hier nehmen wir nur die erste als Beispiel. getCenterAddress() { lass lnglat = this.map.getCenter() AMap.service('AMap.PlaceSearch', () => { let placeSearch = neue AMap.PlaceSearch({ Seitengröße: 10, Seitenindex: 1, Kinder: 1, Erweiterungen: „alle“, Typ: ‚Zugangseinrichtungen|Ortsnamen-Adressinformationen|Behörden und gesellschaftliche Gruppen|Gebäude|Gewerbeparks|Aussichtspunkte|Abflug/Ankunft am Flughafen|Bahnhof|Hafenterminal|Fernbusbahnhof|U-Bahnhof|Stadtbahn-Haltestelle|Busbahnhof‘, }) let center = [lnglat.lng, lnglat.lat] placeSearch.searchNearBy('', Zentrum, 50, (sta, Ergebnis) => { wenn (sta === 'abgeschlossen' und ergebnis.info === 'OK') { // Das erste Element im Array result.poiList.pois ist die genaue erhaltene Adresse}) }) } 6. Punktanimation 😄Fügen Sie dem Punkt, an dem sich die Karte bewegt, eine Auf- und Ab-Sprunganimation hinzu und brechen Sie die Animation beim Bewegen ab Dom: <img src='Animationsobjekt' className={Instance.mapMove ? 'pinAnima' : ''}/> CSS: .pinAnima{ Animation: Abpraller 0,75 s; } @keyframes hüpfen { 0% { transformieren: übersetzenY(0) } 50 % { transformieren: übersetzenY(-20px); } 100 % { transformieren: übersetzenY(0) } } 7. EndeDie Idee ist nicht so kompliziert. Stellen Sie sich die Karte als einen Kastencontainer vor und den Mittelpunkt der Karte als Mittelpunkt des Kastens. Wenn Sie am [Mittelpunkt der Karte] bleiben, wird sie sich nicht bewegen. Wenn Sie die Karte bewegen, ermitteln Sie den Längen- und Breitengrad des [Mittelpunkts der Karte]. Wenn Sie einen bestimmten Standort festlegen, legen Sie den Längen- und Breitengrad auf den [Mittelpunkt der Karte] fest. Es gibt auch einige andere Funktionen, wie z. B.: empfohlene Standorteinstellung, Routenzeichnung, Pfadplanung, Autofahren, Radaranimation usw. Wenn Sie interessiert sind, können Sie sie gemeinsam studieren. Bei der Ortung von Mobiltelefonen können auch einige Probleme auftreten, z. B. Ortungsfehler und Zeitüberschreitungen bei der Ortung. Diese können ebenfalls gemeinsam untersucht werden. Oben sind die Details von React + Gaode Map aufgeführt, um Längen- und Breitengrad sowie Standortadresse in Echtzeit zu erhalten. Weitere Informationen zu React-Standortadressen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
>>: Warum Entwickler Datenbanksperren im Detail verstehen müssen
1. Stellen Sie zunächst eine Remoteverbindung zum...
Häufig gestellte Fragen Wenn Sie easyswoole zum e...
Im Test wurde festgestellt, dass wenn die Seitende...
In meiner Verzweiflung dachte ich plötzlich: Wie i...
Kürzlich bin ich auf die Anforderung gestoßen, Te...
Inhaltsverzeichnis Verwenden von Slots in Vue: Sl...
Der Docker-Container stellt Dienste bereit und la...
Neun einfache Beispiele analysieren die Verwendun...
In diesem Artikelbeispiel wird der spezifische Co...
Ich möchte Ihnen einen kreativen Einstieg vorstel...
Hinweis: Da .NET Framework nicht im Core-Modus au...
In einem aktuellen Projekt wollte ich Text vertik...
1. MacVlan Es gibt viele Lösungen, um eine netzwe...
Ich wollte schon immer Kubernetes lernen, weil es...
1. Regulärer Ausdruck für den Standort Schauen wi...