【发布时间】:2011-08-08 14:36:27
【问题描述】:
我正在尝试在我的 html 页面中手动输入的两点之间找到一条路线,但我得到了 ZERO_RESULTS 返回值。
用户输入两个位置 src_address = "Tel Aviv" 和 dst_address = "Haifa"。
我通过为每个地址调用 geocoder.geocode 两次来获取它们的几何位置。然后设置: src_latlng = 结果[0].geometry.location; dst_latlng = 结果[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>
【问题讨论】:
-
我不确定,但看起来问题是来源和目的地不在美国时的原因!
-
我已经添加了html页面的完整代码。
-
我做到了。抱歉,我没有注意到我应该接受。我对stackoverflow有点陌生。现在我正在这样做。
标签: google-maps google-maps-api-3 maps