谷歌地图 LatLng 不是数字

Tie*_*eDK 1 javascript arrays google-maps

我试图通过将包含纬度/经度位置的字符串转换为数组来在 Google 地图上创建多边形标记。我遇到以下错误:

mc {message: "at index 0: not a LatLng or LatLngLiteral: in property lat: not a number", name: "InvalidValueError"
Run Code Online (Sandbox Code Playgroud)

当我在浏览器控制台中检查数组时,它看起来很好(索引[0]):

lat:"12.3394541791301"
lng:"55.59020913559151"
Run Code Online (Sandbox Code Playgroud)

该字符串具有以下结构:

'12.3394541791301,55.59020913559151, 12.3444451791347,55.5930451355941, 12.3808361791686,55.6099911356099,
Run Code Online (Sandbox Code Playgroud)

所以首先我将每一秒替换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})
}
Run Code Online (Sandbox Code Playgroud)

对于可能导致问题的原因有什么建议吗?

Con*_*ine 6

尝试这样做:

这些加号会将 lat、lng 的字符串值转换为数字。或者尝试parseFloat()

 denmarkLatLong.push({lat: +lat, lng: +lng})
Run Code Online (Sandbox Code Playgroud)

或者

denmarkLatLong.push({lat: parseFloat(lat), lng: parseFloat(lng)})    
Run Code Online (Sandbox Code Playgroud)

问题是你有字符串而不是数字。只是转换,说是否有帮助。

lat:"12.3394541791301" // strings, convert to numbers
lng:"55.59020913559151"
Run Code Online (Sandbox Code Playgroud)