[英]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.