我只想向错误提出一些有关递归的帮助。如果我有这种代码
在我的ajax请求中
var arr=["10.296954, 123.896785","10.298750, 123.895974",
"10.299524, 123.898862","10.294086, 123.897424"];
$.ajax({
....
...
....
success:function(data){
for(var i=0;i<arr.length;i++){
path.push(new google.maps.LatLng((arr[i]));
}
}
});
但如果我改变了这样的话
var arr=["10.296954, 123.896785","10.298750, 123.895974",
"10.299524, 123.898862","10.294086, 123.897424"];
$.ajax({
....
...
....
success:function(data){
for(var i=0;i<arr.length;i++){
path.push(new google.maps.LatLng(10.296954, 123.896785),
new google.maps.LatLng(10.298750, 123.895974),
new google.maps.LatLng(10.299524, 123.898862),
new google.maps.LatLng(10.294086, 123.897424));
}
}
});
它可以正常工作,它会在地图中绘制折线
你能帮我这个吗?如果我将循环坐标
,我的代码有什么问题答案 0 :(得分:4)
正如其他人所说,您需要将单独的lats
和longs
传递给path
。
尝试将阵列更改为更细粒度的模型,例如:
var arr=[{lat: 10.296954, lng: 123.896785},
{lat: 10.298750, lng: 123.895974},
{lat: 10.299524, lng: 123.898862},
{lat: 10.294086, lng: 123.897424}];
然后改变:
path.push(new google.maps.LatLng(arr[i].lat, arr[i].lng);
答案 1 :(得分:1)
LatLng
takes two numeric arguments for the coordinates,但只有一个 - 字符串,例如提供了“10.296954,123.896785”,这是构造函数的无效值。遗憾的是错误并没有多大帮助,但这就是原因。
虽然可以更改源数据,并且这样做可能总体上更好,但可以考虑使用辅助“工厂”功能作为替代方案。
// Create a LatLng given coordinates from a string
// in the form of "lat, lng" or an array of [lat, lng].
function mkLatLng (coords) {
var parts = ("" + coords).split(/,\s+/);
var lat = parseFloat(parts[0]);
var lng = parseFloat(parts[1]);
if (parts.length != 2 || isNaN(lat) || isNaN(lng)) {
throw "invalid data";
}
// Now passing in TWO NUMERIC ARGUMENTS, as per the API
return new google.maps.LatLng(lat, lng);
}
然后它可以用作代理来正确强制/转换数据。
path.push(mkLatLng(arr[i]));
答案 2 :(得分:0)
试试这个,
for(var i=0;i<arr.length;i+=2){// increment i by 2
path.push(new google.maps.LatLng(arr[i],arr[i+1]); // now you get lat,long
}
在上面的例子中,您的数组应该是
var arr=[10.296954, 123.896785,10.298750, 123.895974,
10.299524, 123.898862,10.294086, 123.897424];
否则,请尝试以下代码,
for(var i=0;i<arr.length;i++){
var latlng=arr[i].replace('"','').split(',');
path.push(new google.maps.LatLng(latlng[0],latlng[1]);
}