2012-03-01 93 views
-2

当多个航点被按下时,地图不显示方向渲染。航点是按阵列方式生成的。阵列的每个索引都是中途停留。有人能告诉我我错在哪里吗?这里是我的部分代码在Google地图上显示多个航点v3

var map; 

    var data = new Array(); 

    var minZoomLevel =9; 

    function load(){ 

     map = new google.maps.Map(document.getElementById('map_container'), 

     { 
     'zoom':minZoomLevel, 

     'mapTypeId': google.maps.MapTypeId.ROADMAP, 

     'center': new google.maps.LatLng(-20.131758, 57.587188), 

     'mapTypeControlOptions': 
{style:google.maps.MapTypeControlStyle.DROPDOWN_MENU} 

    }) 


//getDijstra's shortest path 

downloadUrl("dijkstraAlgorithm.php", function(data) { 

    var xml = data.responseXML; 

    var city = xml.documentElement.getElementsByTagName("city"); 

    var len = city.length; 

    var latLng = []; 

    //loop into cities 

    for (var i =0; i <len;i++){ 

     var address = city[i].getAttribute("address"); 

     latLng.push(address); 

} 

    displayOptimisedPath(latLng); 

});

功能displayOptimisedPath(射线){

//build the waypoints 

//free api allows a max of 9 total stops including the start and end address 

//premier allows a total of 25 stops. 

var items = ray; 

//alert(items); 

var waypoints = []; 

len = items.length-1; 

for (var i = 0; i < len; i++) { 

    var address = items[i]; 

    if (address !== "") { 

     waypoints.push({ 

      location: address, 

      stopover: true 

     }); 
    } 

}

var originAddress = items[0]; 

var destinationAddress = items[len]; 

//build directions request 

directionService(); 

var request = { 

     origin: originAddress, 

     destination: destinationAddress, 

     waypoints: waypoints, 

     optimizeWaypoints: true, //set to true if you want google to determine the shortest route or false to use the order specified. 

     travelMode: google.maps.DirectionsTravelMode.DRIVING 

    }; 

//get the route from the directions service 

directionsService.route(request, function (response, status) { 

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

     directionDisplay.setDirections(response); 

    } 

    else { 

    } 

}); 

} //结束功能

功能directionService(){

var directionsService = new google.maps.DirectionsService(); 

var renderOptions = { draggable: false }; 

var directionDisplay = new google.maps.DirectionsRenderer(renderOptions); 

//set the directions display service to the map 

directionDisplay.setMap(map); 

//set the directions display panel 

//panel is usually just and empty div. 

//This is where the turn by turn directions appear. 

directionDisplay.setPanel(directionsPanel); 

} 

功能downloadUrl(URL ,回调){

var request = window.ActiveXObject ? 

    new ActiveXObject('Microsoft.XMLHTTP'): 

    new XMLHttpRequest; 

request.onreadystatechange = function() { 

    if (request.readyState == 4) { 

     request.onreadystatechange = doNothing; 

     callback(request, request.status); 

    } 

    }; 

    request.open('GET', url, true); 

    request.send(null); 
} 

回答

1

directionService()的调用不会的google.maps.DirectionsServicegoogle.maps.DirectionsRenderer访问的实例里面displayOptimisedPath(),他们只是directionService()可用。

简化问题:

function b() 
{ 
    var c='I am C'; 
} 

function a() 
{ 
    b(); 
    alert(typeof c);//will be undefined 
} 
a(); 
相关问题