2017-08-08 148 views
1

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

mc {message: "at index 0: not a LatLng or LatLngLiteral: in property lat: not a number", name: "InvalidValueError" 

当我检查在浏览器控制台阵列看起来细(索引[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}) 
} 

任何建议,以什么可能导致这个问题?

回答

1

我不确定什么是多边形标记,但我怀疑你的意思是。

如果你看一下经纬度文档关键latlng值应该是NumberString。因此,要解决您的问题,您可以使用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) }) 
} 

参考文献:

经纬度:https://developers.google.com/maps/documentation/javascript/examples/map-latlng-literal

2

尝试做这样:

这些脉冲将纬度,经度的你的字符串值转换为数值。或尝试,你有一个字符串代替数字parseFloat()

denmarkLatLong.push({lat: +lat, lng: +lng}) 

OR

denmarkLatLong.push({lat: parseFloat(lat), lng: parseFloat(lng)})  

问题。只要转换,说它是否有帮助。

lat:"12.3394541791301" // strings, convert to numbers 
lng:"55.59020913559151" 
+0

loooolllll ..........不够的,必须正确fistt ... ....... pew pewpe pw epwepw – Constantine