繁体   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