0

In meiner App muss ich nach einem Klick auf die Google-Map die Lat- und Lng-Informationen zur weiteren Bearbeitung abrufen. Und da die App angularJs als Framework verwendet, habe ich die Angular Google Maps Bibliothek für Maps verwendet. Mein Code ist wie folgt:Angular Google Maps: Das LatLng von Click-Ereignisobjekt kann nicht abgerufen werden

$scope.map = { 
     center: { 
      latitude: 37.782551, 
      longitude: -122.445368 
     }, 
     zoom: 12, 
     heatLayerCallback: function (layer) { 
      MockHeatLayer(layer); 
     }, 
     showHeat: true, 
     // the issue is from here 
     onclick: { 
      click : function(maps, event, arguments) { 
       console.log(event.latLng); //return undefined 
       console.log(typeof(event)); //return string type instead of event object 
      } 
     } 
}; 

und HTML-Tag ist wie folgt:

<ui-gmap-google-map center='map.center' zoom='map.zoom' events='map.onclick'> 
    <ui-gmap-layer namespace="visualization" type="HeatmapLayer" show="map.showHeat" onCreated="map.heatLayerCallback"></ui-gmap-layer> 
</ui-gmap-google-map> 

wie Sie sehen können, habe ich die events-onclick im map-Array festgelegt.
Aber nach dem Debuggen ist die event in der Handle-Funktion eine Zeichenfolge anstelle von Objekt, also was ist das Problem?

Antwort

1

Laut der Dokumentation ist das zweite Argument eventName, die Zeichenfolge sein soll, weil Ereignisobjekt im dritten Argument ist. Von docs:

Die Handler-Funktion nimmt drei Parameter: 1. Karten: die GoogleMap 2. Objekt eventname: der Name der Veranstaltung 3. Argumente: die von Google Maps zur Verfügung gestellt Argumente für diese Veranstaltung Geben Sie ein.

Also statt onclick: { ... in Ihrem Code, setzen diese:

events: { 
    click : function(maps, eventName, arguments) { 
      var e = arguments[0]; 
      var lat = e.latLng.lat(), lng = e.latLng.lng(); 
      console.log("my lat is:" + lat + ", lng is:" + lng); 
    } 
} 

aktualisieren events Array auch onclick genannt werden könnte, je nach Art der Veranstaltung, die Sie behandeln möchten.

+1

Vielen Dank für die Hilfe. Ihre Erklärung zu diesen drei Argumenten ist sehr hilfreich. Ich habe das falsche Argument benutzt! Aber noch eine Sache, der Array-Name muss nicht geändert werden. events ist der Attributname. Ich benutze immer noch den onclick und benutze das dritte Argument, und es funktioniert. Das für erinnern –

+0

Danke für Ihre Eingabe, ich kann das nicht in der Dokumentation finden. Ich werde meine Antwort aktualisieren, so dass es erwähnt, dass 'Ereignisse' Array nicht umbenannt werden muss. –