2017-08-08 3 views
1

Ich versuche, Polygonmarkierungen auf einer Google-Map zu erstellen, indem ich eine Zeichenfolge mit Lat/Lng-Positionen in ein Array umwandelt. Ich laufe in den folgenden Fehler:Google Maps LatLng keine Nummer

mc {message: "at index 0: not a LatLng or LatLngLiteral: in property lat: not a number", name: "InvalidValueError" 

Wenn ich das Array in der Browser-Konsole überprüfen sieht es gut (Index [0]):

lat:"12.3394541791301" 
lng:"55.59020913559151" 

Die Saite hat die folgende Struktur:

'12.3394541791301,55.59020913559151, 12.3444451791347,55.5930451355941, 12.3808361791686,55.6099911356099, 

Also zuerst ersetzen i jede Sekunde comma mit ;

Wenn ich split(";") verwenden meine Array zu erstellen, die ich, wenn Schleife schieben und in ein neues Array mit den richtigen Tasten:

s = s.replace(/([^,]+,[^,]+),/g,'$1;'); 
s = s.split(";"); 

for (var i = 0; i < s.length; i++) { 
     var lat = s[i].split(',')[0]; 
     var lng = s[i].split(',')[1]; 
     // Push to array which is used by Google Maps 
     denmarkLatLong.push({lat: lat, lng: lng}) 
} 

Irgendwelche Vorschläge, was das Problem verursachen könnte?

Antwort

1

Ich bin mir nicht sicher, was ein Polygon Marker ist, aber ich vermute, dass Sie gemeint.

Wenn Sie an der latlng Dokumentation aussehen der Wert für die Schlüssel lat und lng sollen NumbernichtString sein. Um das Problem zu beheben, können Sie die string Koordinaten in Zahlen umwandeln. Verwenden Sie dazu die API Number(...).

Beispiel:

s = s.replace(/([^,]+,[^,]+),/g,'$1;'); 
s = s.split(";"); 

for (var i = 0; i < s.length; i++) { 
     var lat = s[i].split(',')[0]; 
     var lng = s[i].split(',')[1]; 
     // Push to array which is used by Google Maps 
     denmarkLatLong.push({lat: Number(lat), lng: Number(lng) }) 
} 

Referenzen:

LatLng: https://developers.google.com/maps/documentation/javascript/examples/map-latlng-literal

2

Versuchen Sie, diese Art und Weise zu tun:

Diese Pluspunkte werden Ihre String-Werte von lat, lng in numerische konvertieren. Oder versuchen parseFloat()

denmarkLatLong.push({lat: +lat, lng: +lng}) 

ODER

denmarkLatLong.push({lat: parseFloat(lat), lng: parseFloat(lng)})  

Problem, das Sie Strings anstelle von Zahlen haben. Konvertiere einfach, sag, ob es geholfen hat.

lat:"12.3394541791301" // strings, convert to numbers 
lng:"55.59020913559151" 
+0

loooolllll .......... nicht genug richtig und fistt zu sein ... ....... pew pewpe pw epwepw – Constantine