Google Maps API:在以色列的两个点之间找到一条路线

时间:2011-04-19 11:29:36

标签: google-maps google-maps-api-3 maps

我正在尝试在我的html页面手动输入的两个点之间找到路线,但我得到ZERO_RESULTS返回值。

用户输入两个位置src_address =“Tel Aviv”和dst_address =“Haifa”。

通过为每个地址调用geocoder.geocode两次来获取它们的几何位置。然后设置: src_latlng = results [0] .geometry.location; dst_latlng = results [0] .geometry.location;

然而,当要求路由器我得到ZERO_RESULTS:

这是代码:

    <!DOCTYPE html>
<html>
<img src="globe123.jpg" width="72" height="75"/> 
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Geocoding Simple</title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>



<script type="text/javascript">
  var directionDisplay;
  var directionsService = new google.maps.DirectionsService();

  var geocoder;
  var map;
  var geodesic;
  var poly;
  var src_latlng;
  var dst_latlng;

  function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();

    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);


    var polyOptions = {
      strokeColor: '#FF0000',
      strokeOpacity: 1.0,
      strokeWeight: 3
    }
    poly = new google.maps.Polyline(polyOptions);
    poly.setMap(map);
    directionsDisplay.setMap(map);
    // Add a listener for the click event
    //google.maps.event.addListener(map, 'click', addLocation);
  }

  function codeAddress() {
    var src_address = document.getElementById("SRC_ADDR").value;
    var dst_address = document.getElementById("DST_ADDR").value;

    geocoder.geocode( { 'address': src_address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var path = poly.getPath();
        path.push(results[0].geometry.location);
        src_latlng = results[0].geometry.location;
        var marker = new google.maps.Marker({
            map: map, 
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
    geocoder.geocode( { 'address': dst_address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        map.setZoom(8);

        var path = poly.getPath();
        path.push(results[0].geometry.location);
        dst_latlng = results[0].geometry.location;
        var marker = new google.maps.Marker({
            map: map, 
            position: results[0].geometry.location
        });


        calcRoute();

      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });



  }

  function calcRoute() {



      var start = src_latlng;
      var end = dst_latlng;
      var request = {
        origin:start, 
        destination:end ,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
      };

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

        if (status == google.maps.DirectionsStatus.OK) {         
          directionsDisplay.setDirections(result);
        } else {
            alert(status);            
        }    
        });
    }


</script>
</head>
<body onload="initialize()">


  <div style="text-align:left">
  Source: <input id="SRC_ADDR" type="textbox" value="Tel-Aviv, Israel">
  Destination: <input id="DST_ADDR" type="textbox" value="Haifa, Israel">
  <input type="button" value="Calculate Travel Time" onclick="codeAddress()">
  </div>
  <div id="map_canvas" style="height:40%;width:40%;top:120px"></div>
  <!-- <div id="map_canvas" style="width: 320px; height: 480px;"></div> 
  -->



</body>
</html>

3 个答案:

答案 0 :(得分:3)

Google还没有针对以色列的Maps API覆盖范围,因此从directionsService.route函数调用返回了ZERO_RESULTS状态。

请参阅Google支持的地区here的地图覆盖范围详情工作表。电子表格的直接链接是here

答案 1 :(得分:2)

您可以使用此代码获取源和目的地之间的路线

function setRoute()
{
      var fromAddress=document.getElementById("txtfromAddress").value;
      var toAddress=document.getElementById("txttoAddress").value; 
      if(fromAddress!="" && toAddress!="")
      {
       if(!fromAddress && !toAddress)
       {
       alert('ROute not found');
       }
       GDir1.load("from: " + fromAddress + " to: " + toAddress);        


      }
      else
      {
        alert('Route Directions Required');
      }
}

答案 2 :(得分:0)

*的 http://gmaps-samples.googlecode.com/svn/trunk/mapcoverage_filtered.html* 看它是否覆盖您的区域,它包括街景或卫星视图等详细视图  GL