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)
对于可能导致问题的原因有什么建议吗?
尝试这样做:
这些加号会将 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)
| 归档时间: |
|
| 查看次数: |
5050 次 |
| 最近记录: |