簡體   English   中英

谷歌地圖LatLng不是一個數字

[英]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 latlng的值應該是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM