此javascript数组包含我发送到Google Maps API以在地图中绘制路径的坐标。 有时坐标[0]为空,因为它取决于以前可能存在或不存在的路线(使用Google地图)。
这是我的代码:
coordinates = [];
(在这里我寻找前一个路径(coordinates [0])。在这种情况下,我们假设它是null。所以我们有这些值:
coordinates[1] = '50,20'; //route 1
coordinates[2] = '10,18'; //route 2
coordinates[3] = '27,34'; //route 3
之后,我在地图中画出这样的路径:
travel_path = new google.maps.Polyline({
path: coordinates
});
travel_path.setMap(map);
问题:当没有坐标[0](当没有旅行路径的前一段时发生)时,.Polyline方法会抛出错误,因为它需要接收一个数组序列索引从0开始。
问题:如何将原始数组转换为此(比较索引):
coordinates[0] = '50,20'; //route 1
coordinates[1] = '10,18'; //route 2
coordinates[2] = '27,34'; //route 3
答案 0 :(得分:2)
coordinates.shift()
从数组中删除第一个元素。
var coordinates = [];
//coordinates[0] = undefined;
coordinates[1] = '50,20'; //route 1
coordinates[2] = '10,18'; //route 2
coordinates[3] = '27,34'; //route 3
coordinates.shift();
coordinates.shift()
会导致这种情况发生:
coordinates[0] = coordinates[1];
coordinates[1] = coordinates[2];
coordinates[2] = coordinates[3];
//coordinates[3] is removed.
答案 1 :(得分:1)
就像rob说的那样,使用shift(),你可以先检查一下是否定义了坐标[0]。
if( !coordinates[0] )
coordinates.shift();
答案 2 :(得分:0)
答案 3 :(得分:0)
使用:
travel_path = new google.maps.Polyline({
path:(function(){
var arrayCoord=[],k=0;
for(var key in coordinates){
arrayCoord[k]=coordinates[key];
++k;
}
return arrayCoord;
})()
});
travel_path.setMap(map);