自定义API代码路线不会使用高速公路/高速公路

时间:2018-11-02 17:38:43

标签: api dictionary

我正在尝试使用自定义代码,但是路线,但是当我将几何经度放入高速公路时,由于某些原因,我不会单独运行那些路线吗?

我正在使用的代码是

<meta name="viewport" content="scale=1, user-scalable=no"> 

<meta charset="utf-800"> 

<title>Google Maps JavaScript API v3 Example: Directions Waypoints</title> 

#map{ 

width: 100%; 

height: 500px; 

}

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
  

<script> 

  jQuery(function() { 

var stops = [ 

                    {"Geometry":{"Latitude":52.966717,"Longitude":-1.235977}},
                    {"Geometry":{"Latitude":52.992800,"Longitude":-1.232724}},

];

var map = new window.google.maps.Map(document.getElementById("map")); 



// new up complex objects before passing them around 

var directionsDisplay = new window.google.maps.DirectionsRenderer({suppressMarkers: true}); 

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



Tour_startUp(stops); 



window.tour.loadMap(map, directionsDisplay); 

window.tour.fitBounds(map); 



if (stops.length > 1) 

    window.tour.calcRoute(directionsService, directionsDisplay); 

});

功能Tour_startUp(停止){

if (!window.tour) window.tour = { 

    updateStops: function (newStops) { 

        stops = newStops; 

    }, 

    // map: google map object 

    // directionsDisplay: google directionsDisplay object (comes in empty) 

    loadMap: function (map, directionsDisplay) { 

        var myOptions = { 

            zoom: 9, 

            center: new window.google.maps.LatLng(51.507937, -0.076188), // default to London 

            mapTypeId: window.google.maps.MapTypeId.ROADMAP

        }; 

        map.setOptions(myOptions); 

        directionsDisplay.setMap(map); 

    }, 

    fitBounds: function (map) { 

        var bounds = new window.google.maps.LatLngBounds(); 



        // extend bounds for each record 

        jQuery.each(stops, function (key, val) { 

            var myLatlng = new window.google.maps.LatLng(val.Geometry.Latitude, val.Geometry.Longitude); 

            bounds.extend(myLatlng); 

        }); 

        map.fitBounds(bounds); 

    }, 

    calcRoute: function (directionsService, directionsDisplay) { 

        var batches = []; 

        var itemsPerBatch = 10; // google API max = 10 - 1 start, 1 stop, and 8 waypoints 

        var itemsCounter = 0; 

        var wayptsExist = stops.length > 0; 



        while (wayptsExist) { 

            var subBatch = []; 

            var subitemsCounter = 0; 



            for (var j = itemsCounter; j < stops.length; j++) { 

                subitemsCounter++; 

                subBatch.push({ 

                    location: new window.google.maps.LatLng(stops[j].Geometry.Latitude, stops[j].Geometry.Longitude), 

                    stopover: true 

                }); 

                if (subitemsCounter == itemsPerBatch) 

                    break; 

            } 



            itemsCounter += subitemsCounter; 

            batches.push(subBatch); 

            wayptsExist = itemsCounter < stops.length; 

            // If it runs again there are still points. Minus 1 before continuing to 

            // start up with end of previous tour leg 

            itemsCounter--; 

        } 



        // now we should have a 2 dimensional array with a list of a list of waypoints 

        var combinedResults; 

        var unsortedResults = [{}]; // to hold the counter and the results themselves as they come back, to later sort 

        var directionsResultsReturned = 0; 



        for (var k = 0; k < batches.length; k++) { 

            var lastIndex = batches[k].length - 1; 

            var start = batches[k][0].location; 

            var end = batches[k][lastIndex].location; 



            // trim first and last entry from array 

            var waypts = []; 

            waypts = batches[k]; 

            waypts.splice(0, 1); 

            waypts.splice(waypts.length - 1, 1); 



            var request = { 

                origin: start, 

                destination: end, 

                waypoints: waypts, 

                travelMode: window.google.maps.TravelMode.WALKING 

            }; 

            (function (kk) { 

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

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



                        var unsortedResult = { order: kk, result: result }; 

                        unsortedResults.push(unsortedResult); 



                        directionsResultsReturned++; 



                        if (directionsResultsReturned == batches.length) // we've received all the results. put to map 

                        { 

                            // sort the returned values into their correct order 

                            unsortedResults.sort(function (a, b) { return parseFloat(a.order) - parseFloat(b.order); }); 

                            var count = 0; 

                            for (var key in unsortedResults) { 

                                if (unsortedResults[key].result != null) { 

                                    if (unsortedResults.hasOwnProperty(key)) { 

                                        if (count == 0) // first results. new up the combinedResults object 

                                            combinedResults = unsortedResults[key].result; 

                                        else { 

                                            // only building up legs, overview_path, and bounds in my consolidated object. This is not a complete 

                                            // directionResults object, but enough to draw a path on the map, which is all I need 

                                            combinedResults.routes[0].legs = combinedResults.routes[0].legs.concat(unsortedResults[key].result.routes[0].legs); 

                                            combinedResults.routes[0].overview_path = combinedResults.routes[0].overview_path.concat(unsortedResults[key].result.routes[0].overview_path); 



                                            combinedResults.routes[0].bounds = combinedResults.routes[0].bounds.extend(unsortedResults[key].result.routes[0].bounds.getNorthEast()); 

                                            combinedResults.routes[0].bounds = combinedResults.routes[0].bounds.extend(unsortedResults[key].result.routes[0].bounds.getSouthWest()); 

                                        } 

                                        count++; 

                                    } 

                                } 

                            } 

                            directionsDisplay.setDirections(combinedResults); 

                            var legs = combinedResults.routes[0].legs; 

                            // alert(legs.length); 

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

              var markerletter = " ".charCodeAt(0); 

              markerletter += i; 

                              markerletter = String.fromCharCode(markerletter); 

                              createMarker(directionsDisplay.getMap(),legs[i].start_location,"marker"+i,"some text for marker "+i+"<br>"+legs[i].start_address,markerletter); 

                            } 

                            var i=legs.length; 

                            var markerletter = " ".charCodeAt(0); 

                markerletter += i; 

                            markerletter = String.fromCharCode(markerletter); 

                            createMarker(directionsDisplay.getMap(),legs[legs.length-1].end_location,"marker"+i,"some text for the "+i+"marker<br>"+legs[legs.length-1].end_address,markerletter); 

                        } 

                    } 

                }); 

            })(k); 

        } 

    } 

}; 

}

var infowindow =新的google.maps.InfoWindow(

{

size: new google.maps.Size(150,50) 

});

var icons = new Array();

icons [“ red”] =新的google.maps.MarkerImage(“ mapIcons / marker_red.png”,

  // This marker is 20 pixels wide by 34 pixels tall. 

  new google.maps.Size(20, 34), 

  // The origin for this image is 0,0. 

  new google.maps.Point(0,0), 

  // The anchor for this image is at 9,34. 

  new google.maps.Point(9, 34)); 

function getMarkerImage(iconStr){

if(((typeof(iconStr)==“ undefined”)||(iconStr == null)){

  iconStr = "red";  

}

if(!icons [iconStr]){

  icons[iconStr] = new google.maps.MarkerImage("http://www.google.com/mapfiles/marker"+ iconStr +".png", 

  // This marker is 20 pixels wide by 34 pixels tall. 

  new google.maps.Size(20, 34), 

  // The origin for this image is 0,0. 

  new google.maps.Point(0,0), 

  // The anchor for this image is at 6,20. 

  new google.maps.Point(9, 34)); 

}

返回图标[iconStr];

}

//标记大小表示为X,Y大小

//图像(0,0)的原处

//在图像的左上方。

//标记的原点,锚点位置和坐标

//沿X方向向右和

增大

// Y方向向下。

var iconImage =新的google.maps.MarkerImage('mapIcons / marker_red.png',

  // This marker is 20 pixels wide by 34 pixels tall. 

  new google.maps.Size(20, 34), 

  // The origin for this image is 0,0. 

  new google.maps.Point(0,0), 

  // The anchor for this image is at 9,34. 

  new google.maps.Point(9, 34)); 

var iconShadow =新的google.maps.MarkerImage('http://www.google.com/mapfiles/shadow50.png',

  // The shadow image is larger in the horizontal dimension 

  // while the position and offset are the same as for the main image. 

  new google.maps.Size(37, 34), 

  new google.maps.Point(0,0), 

  new google.maps.Point(9, 34)); 

  // Shapes define the clickable region of the icon. 

  // The type defines an HTML &lt;area&gt; element 'poly' which 

  // traces out a polygon as a series of X,Y points. The final 

  // coordinate closes the poly by connecting to the first 

  // coordinate. 

var iconShape = {

  coord: [9,0,6,1,4,2,2,4,0,8,0,12,1,14,2,16,5,19,7,23,8,26,9,30,9,34,11,34,11,30,12,26,13,24,14,21,16,18,18,16,20,12,20,8,18,4,16,2,15,1,13,0], 

  type: 'poly' 

};

function createMarker(地图,样式,标签,html,颜色){

// alert(“ createMarker(” + latlng +“,” + label +“,” + html +“,” + color +“)”));

var contentString = '<b>'+label+'</b><br>'+html; 

var marker = new google.maps.Marker({ 

    position: latlng, 

    map: map, 

    shadow: iconShadow, 

    icon: getMarkerImage(color), 

    shape: iconShape, 

    title: label, 

    zIndex: Math.round(latlng.lat()*-100000)<<5 

    }); 

    marker.myname = label; 



google.maps.event.addListener(marker, 'click', function() { 

    infowindow.setContent(contentString);  

    infowindow.open(map,marker); 

    }); 

return marker; 

}

</script> 

0 个答案:

没有答案