简体   繁体   English

谷歌地图API:如何显示行车路线?

[英]google maps API : how to show driving direction?

Is there any simple solution to fix route function 有没有简单的解决方案来修复路由功能

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

var map;
var digiLocation = { "lat" : "51.597336" , "long" : "-0.109035" };
$(document).ready(function() {
  $("#direction-route").click(function(event){
    event.preventDefault();
    var locationStart = "turnpike lane"
    calcRoute(locationStart)
  });
  var laLatLng;
  initialize();
});
// Set pointer at the middle while resize
google.maps.event.addDomListener(window, "resize", function() {
    var center = map.getCenter();
    google.maps.event.trigger(map, "resize");
    map.setCenter(center); 
});
function calcRoute(locationStart){
  var request = {
      origin: locationStart, 
      destination:(digiLocation.lat, digiLocation.long),
      travelMode: google.maps.DirectionsTravelMode.DRIVING
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      myLatlng.setDirections(response);
    }
  });
}

function initialize() {
    var myLatlng = new google.maps.LatLng(digiLocation.lat, digiLocation.long);
    var myOptions = {
        scrollwheel: false,
        zoom: 16,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        styles: [ { "stylers": [{ "saturation": -100 } ]}]
    };
    map = new google.maps.Map(document.getElementById('digi-map'), myOptions);
    marker = new google.maps.Marker({
        position: myLatlng,
        icon: 'img/digi-marker.png',
        map: map
    });
}
google.maps.event.addDomListener(window, 'load', initialize);

http://jsfiddle.net/sweetmaanu/qQjeB/ http://jsfiddle.net/sweetmaanu/qQjeB/

Oh boy, this was full of errors! 哦,男孩,这充满了错误! :-) :-)

  1. The way you've setup your code, myLatlng needs global scope, otherwise in function calcRoute it's not available. 设置代码的方式myLatlng需要全局作用域,否则在calcRoute函数中不可用。
  2. request.destination:new google.maps.LatLng(digiLocation.lat, digiLocation.long) request.destination:new google.maps.LatLng(digiLocation.lat,digiLocation.long)
  3. You never set the directionsDisplay object: 您永远不会设置directionsDisplay对象:
    • directionsDisplay = new google.maps.DirectionsRenderer(); directionsDisplay = new google.maps.DirectionsRenderer();
    • directionsDisplay.setMap(map); directionsDisplay.setMap(地图);
  4. calcRoute should include this line: directionsDisplay.setDirections(response); calcRoute应该包含以下行:directionsDisplay.setDirections(response);

See working fiddle: http://jsfiddle.net/manishie/5fGEZ/ 参见工作提琴: http : //jsfiddle.net/manishie/5fGEZ/

javascript: JavaScript的:

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

var map;
var digiLocation = {
    "lat": "51.597336",
        "long": "-0.109035"
};
var myLatlng = new google.maps.LatLng(digiLocation.lat, digiLocation.long);

$(document).ready(function () {
    $("#direction-route").click(function (event) {
        event.preventDefault();
        var locationStart = "turnpike lane"
        calcRoute(locationStart)
    });
    var laLatLng;
    initialize();
});
// Set pointer at the middle while resize
google.maps.event.addDomListener(window, "resize", function () {
    var center = map.getCenter();
    google.maps.event.trigger(map, "resize");
    map.setCenter(center);
});

function calcRoute(locationStart) {
    var request = {
        origin: locationStart,
        destination: new google.maps.LatLng(digiLocation.lat, digiLocation.long),
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
        }
    });
}

function initialize() {
    var myOptions = {
        scrollwheel: false,
        zoom: 16,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        styles: [{
            "stylers": [{
                "saturation": -100
            }]
        }]
    };
    map = new google.maps.Map(document.getElementById('digi-map'), myOptions);
    marker = new google.maps.Marker({
        position: myLatlng,
        icon: 'img/digi-marker.png',
        map: map
    });
    directionsDisplay = new google.maps.DirectionsRenderer();
    directionsDisplay.setMap(map);

}
google.maps.event.addDomListener(window, 'load', initialize);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM