微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Google地图未显示路线

我试图显示两个标记间的路线,但地图始终只显示爱尔兰的认位置,并且不显示路线
public string DrawMapDirections(string Start,string End,string[] WayPoints)
{
    string map = "<script type=\"text/javascript\" src=\"https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false\"></script>" +
    "<script>" +
        "var rendererOptions = { "+ 
            "draggable: true "+
        "}; " +
        "var directionsdisplay = new google.maps.DirectionsRenderer(rendererOptions); " +
        " var directionsService = new google.maps.DirectionsService(); " +
        " var map; " +

        "function initialize() { " +
            "var ireland = new google.maps.LatLng(53.085222,-7.558594); " + //Default Ireland
            " var mapOptions = { " +
            " zoom: 7," +
            " mapTypeId: google.maps.MapTypeId.ROADMAP," +
            " center: ireland " +
            "}; " +
            "map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions); " +
            "directionsdisplay.setMap(map); " +
            "directionsdisplay.setPanel(document.getElementById('directionsPanel'));" +

            "google.maps.event.addListener(directionsdisplay,'directions_changed',function() { " +
                "computetotaldistance(directionsdisplay.directions); "+
            "}); "+ 
            //Call calcRoute
            " calcRoute();" +
        "}" +

        "function calcRoute() { " +
            "var start = '" + Start.Replace("'","") + "'; " +
            "var end = '" + End.Replace("'","") + "'; " +
            "var waypts = []; ";

    foreach (string s in WayPoints)
    {
        map += "waypts.push({ " +
                "location:'" + s.Replace("'","") + "'}); ";
    }
            map += "var request = { " +
                "origin: start," +
                "destination: end," +
                "waypoints: waypts," +
                "optimizeWaypoints: document.getElementById('chkOptimizeWaypoints').checked," +
                "durationInTraffic:document.getElementById('chkDurationInTraffic').checked," +
                "provideRoutealternatives: document.getElementById('chkProvideRoutealternatives').checked," +
                "avoidHighways: document.getElementById('chkAvoidHighWays').checked," +
                "avoidTolls: document.getElementById('chkAvoidTolls').checked," + 
                "travelMode: google.maps.DirectionsTravelMode.DRIVING " +
            "}; " +
            "directionsService.route(request,function(response,status) { " +
                "if (status == google.maps.Directionsstatus.OK) {" +
                    "directionsdisplay.setDirections(response);" +
                    "var route = response.routes[0];" +
              "}" +
            "});" +
         " }" +

         "function computetotaldistance(result) { "+ 
            "var total = 0; "+
            "var myroute = result.routes[0]; " +
            "for (i = 0; i < myroute.legs.length; i++) { "+
                "total += myroute.legs[i].distance.value; "+
            "} "+ 
            "total = total / 1000; "+ 
            "document.getElementById('total').innerHTML = total + ' km'; "+
        "} "+

         "</script>";
    return map;
}

起点和终点通过此函数传递:

GoogleMap gm = new GoogleMap();
html += gm.DrawMapDirections(start,end,waypoints.ToArray());

例如,开始可能是这样的 – Treloggan Ind Est,Newquay,TR7 2SX,Cornwall,United Kingdom.

我没有收到任何错误,所以我不知道为什么它不显示路线

好的,这是什么地图返回:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var rendererOptions = { draggable: true }; 
var directionsdisplay = new google.maps.DirectionsRenderer(rendererOptions);  
var directionsService = new google.maps.DirectionsService();  
var map; function initialize() { 
    var ireland = new google.maps.LatLng(53.085222,-7.558594);  
    var mapOptions = {  zoom: 7,mapTypeId: google.maps.MapTypeId.ROADMAP,center: ireland }; 
    map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions); 
    directionsdisplay.setMap(map); 
    directionsdisplay.setPanel(document.getElementById('directionsPanel'));
    google.maps.event.addListener(directionsdisplay,function() { 
            computetotaldistance(directionsdisplay.directions); 
        });  
        calcRoute()
    ;}
    function calcRoute() { 
    var start = 'Unit 2,Hendy Industrial Estate,Hendy,SWANSEA,SA4 0XP,West Glamorgan,UNITED KINGDOM'; 
    var end = 'Treloggan Ind Est,UNITED KINGDOM'; 
    var waypts = []; 
    var request = { 
    origin: start,destination: end,waypoints: waypts,optimizeWaypoints: document.getElementById('chkOptimizeWaypoints').checked,durationInTraffic:document.getElementById('chkDurationInTraffic').checked,provideRoutealternatives: document.getElementById('chkProvideRoutealternatives').checked,avoidHighways: document.getElementById('chkAvoidHighWays').checked,avoidTolls: document.getElementById('chkAvoidTolls').checked,travelMode: google.maps.DirectionsTravelMode.DRIVING }; 
    directionsService.route(request,status) { 
        if (status == google.maps.Directionsstatus.OK){
            directionsdisplay.setDirections(response);var route = response.routes[0];}}); 
        }
        function computetotaldistance(result) { 
            var total = 0; 
            var myroute = result.routes[0]; 
            for (i = 0; i < myroute.legs.length; i++) { 
                total += myroute.legs[i].distance.value; } 
                total = total / 1000; 
                document.getElementById('total').innerHTML = total + ' km'; 
        } 
    </script>

解决方法

你的代码对我来说是正确的.我用你的代码创建了一个片段,然后我从路径请求中找回了“未找到”的状态.如果我将起点更改为Google地图可以找到的地址,则会显示该路线(位于下面的代码段中).

如果你知道起点的纬度和经度,你可以使用它,否则你需要有一个方向服务知道的地址.

<!DOCTYPE html>
<html lang="en">

<head>
  <Meta charset="UTF-8">
  <title>Direction Service Example</title>
</head>

<body>
  <div id="map_canvas" style="width: 600px;height: 600px"></div>
  <script>
    var map;
    var directionsdisplay;
    var directionsService;

    function initialize() {
      var ireland = new google.maps.LatLng(53.085222,-7.558594);
      var mapOptions = {
        zoom: 7,center: ireland
      };
      directionsdisplay = new google.maps.DirectionsRenderer({
        draggable: true
      });
      directionsService = new google.maps.DirectionsService();
      map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
      directionsdisplay.setMap(map);
      directionsdisplay.setPanel(document.getElementById('directionsPanel'));
      google.maps.event.addListener(directionsdisplay,function() {
          computetotaldistance(directionsdisplay.directions);
        });
      calcRoute();
    }

    function calcRoute() {
      var start = 'Hendy Industrial Estate,Pontarddulais,Swansea,Carmarthenshire SA4 0XP,UK';
      var end = 'Treloggan Ind Est,UNITED KINGDOM';
      var waypts = [];
      var request = {
        origin: start,optimizeWaypoints: false,durationInTraffic: true,provideRoutealternatives: true,avoidHighways: false,avoidTolls: false,travelMode: google.maps.DirectionsTravelMode.DRIVING
      };
      directionsService.route(request,status) {
        if (status == google.maps.Directionsstatus.OK) {
          directionsdisplay.setDirections(response);
          var route = response.routes[0];
        }
      });
    }

    function computetotaldistance(result) {
      var total = 0;
      var myroute = result.routes[0];
      for (i = 0; i < myroute.legs.length; i++) {
        total += myroute.legs[i].distance.value;
      }
      total = total / 1000;
      document.getElementById('total').innerHTML = total + ' km';
    }
  </script>
  <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=initialize"></script>
</body>

</html>

原文地址:https://www.jb51.cc/js/157394.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐