Ich habe eine Funktion erstellt, um mehrere Markierungen von einem Objekt auf einer Karte zu zeichnen. Jeder Marker wird auch in ein Array geschoben, um später darauf zuzugreifen.google.maps.LatLng gibt eine Funktion zurück, die 'a' zurückgibt. Warum?
Meine create Funktion sieht wie folgt aus und wird in der initMap Funktion aufgerufen:
function createMarker(markerData){
for(var i = 0; i < markerData.length; i++){
var testing = new google.maps.LatLng(parseFloat(markerData[i].lat), parseFloat(markerData[i].lng));
console.log(testing);
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(parseFloat(markerData[i].lat), parseFloat(markerData[i].lng)),
map: myMap
});
markerBounds.extend(marker.position);
markerArray.push(marker);
}
}
Aber mein Problem ist, dass das Konsolenprotokoll nur zurückgibt:
function(){return a}
und nicht das erwartete lat lng Objekt. Also in meinem MarkerArray gibt es auch keine Koordinaten. Aber die Markierungen werden immer noch auf der Karte erstellt.
Später mag ich jede Markerposition von marker mit der aktuellen Position des Benutzers vergleichen. Aber ich denke, das funktioniert nicht, weil das oben beschriebene Problem.
for (var i = 0; i < markerArray.length; i++) {
var markerPosition = new google.maps.LatLng(parseFloat(markerArray[i].lat), parseFloat(markerArray[i].lng));
if(google.maps.geometry.spherical.computeDistanceBetween(userPosition, markerPosition) < radius){
console.log('test');
}
}
habe ich eine Forschung auf diesem aber keine Antwort gefunden. Die einzige Information, die ich habe, ist über asynchrone Funktionen.
Ich hoffe, dass Sie das Problem verstehen. :)
Vielen Dank. Du hast mir den entscheidenden Tipp gegeben. Mein Problem war, dass ich lat und lng nicht als Getterfunktionen benutzt habe. Mit .position.lat() bekomme ich die richtigen Werte. – mxlnge