[英]Google maps LatLng not a number
我正在嘗試通過將包含lat / lng位置的字符串轉換為數組來在Google地圖上創建多邊形標記。 我遇到了以下錯誤:
mc {message: "at index 0: not a LatLng or LatLngLiteral: in property lat: not a number", name: "InvalidValueError"
當我在瀏覽器控制台中檢查數組時,它看起來很好(index [0]):
lat:"12.3394541791301"
lng:"55.59020913559151"
該字符串具有以下結構:
'12.3394541791301,55.59020913559151, 12.3444451791347,55.5930451355941, 12.3808361791686,55.6099911356099,
所以首先我用每秒comma
替換;
當我使用split(";")
創建我的數組時,我在循環時使用正確的鍵推入新數組:
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})
}
有什么可能導致問題的建議嗎?
嘗試這樣做:
這些加號會將lat,lng的字符串值轉換為數字。 或者嘗試parseFloat()
denmarkLatLong.push({lat: +lat, lng: +lng})
要么
denmarkLatLong.push({lat: parseFloat(lat), lng: parseFloat(lng)})
問題是你有字符串而不是數字。 只是轉換,說它是否有幫助。
lat:"12.3394541791301" // strings, convert to numbers
lng:"55.59020913559151"
我不確定多邊形標記是什么,但我懷疑你的意思是marker
。
如果你看一下latlng文檔,那么key lat
和lng
的值應該是Number
not String
。 因此,要解決您的問題,您可以使用api Number(...)
將string
坐標轉換為數字。
例:
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) })
}
參考文獻:
LatLng: https : //developers.google.com/maps/documentation/javascript/examples/map-latlng-literal
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.