Javascript 调用标记数组中最后一个标记之前的标记位置

Javascript 调用标记数组中最后一个标记之前的标记位置,javascript,arrays,google-maps-api-3,Javascript,Arrays,Google Maps Api 3,我想使用方向服务(谷歌地图API V3)之间的标记从搜索输入与自动完成。我将标记放入一个数组中,但我无法在最后一个标记之前获得标记的位置(标记[i-1]) 我得到的“uncaughttypeerror:无法读取未定义的属性‘position’”仅适用于这一个 全部代码: 为什么会发生这种情况 for (var i = 0; i < markers.length; i++) { if (markers.length > 1) {

我想使用方向服务(谷歌地图API V3)之间的标记从搜索输入与自动完成。我将标记放入一个数组中,但我无法在最后一个标记之前获得标记的位置(标记[i-1])

我得到的“uncaughttypeerror:无法读取未定义的属性‘position’”仅适用于这一个

全部代码:

为什么会发生这种情况

for (var i = 0; i < markers.length; i++) {

            if (markers.length > 1) {   
                place = markers[i].position;
                console.log(place);
                lastPlace = markers[i-1].position;

                console.log(lastPlace);         

                calcRoute();
            }
        }

function calcRoute() {


         var start = lastPlace;
        var end = place;
        console.log(start);
        console.log(end);
        var request = {
      origin:start,
      destination:end,
      travelMode: google.maps.TravelMode.DRIVING
      };
      directionsService.route(request, function(response, status) {

        if (status === google.maps.DirectionsStatus.OK) {

            directionsDisplay.setDirections(response);
        }
      });
    }    
for(变量i=0;i1){
地点=标记[i]。位置;
控制台日志(位置);
lastPlace=标记[i-1]。位置;
console.log(lastPlace);
calcRoute();
}
}
函数calcRoute(){
var开始=最后一个位置;
var end=位置;
console.log(启动);
控制台日志(结束);
var请求={
来源:start,
目的地:完,
travelMode:google.maps.travelMode.DRIVING
};
路由(请求、功能(响应、状态){
if(status==google.maps.directionstatus.OK){
方向显示。设置方向(响应);
}
});
}    

标记。长度(最有可能)始终为1或更多。因此,在每个第一个循环中都会出现错误,
标记[0-1]
始终是未定义的。使用

if (i > 0) {   
    place = markers[i].position;
    console.log(place);
    lastPlace = markers[i-1].position;
    console.log(lastPlace);         
    calcRoute();
}


相反。

如果i=0,“lastplace”是什么?“lastplace”是起点,“place”是终点。当我插入一个将作为终点的位置时。如果i=0,则当我插入第二个位置时,“lastpoint”将成为我的起点,我每个周期都会得到相同的错误。我认为如果(markers.length>1){…}应该阻止寻找标记[I-1]markers.length只是标记数组的静态长度,那么您必须寻址
I
或者向下循环到1。for(var I=markers.length;I>1;I--){…}得到了相同的结果
for (var i = markers.length; i>1; i--) {
    place = markers[i].position;
    console.log(place);
    lastPlace = markers[i-1].position;
    console.log(lastPlace);         
    calcRoute();
}