编辑:由于geocodezip的帮助解决了这个问题,他在评论中指出了正确的方法......
问题:我希望从谷歌转发方向作为纯文本,我需要transit_details . 我尝试添加所有变体的东西(这不起作用):
steps[i].transit.arrival_stop.name
解决方案:大多数 Bus 路线都有行走的第一步和最后一步 . 在这种情况下, .transit
不存在并产生错误 .
我相应地修改了下面的代码(现在可以使用) .
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title></title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?"></script>
</head>
<body style="font-family: Arial; font-size: 12px; color:#FFFFFF;" bgcolor="#202020">
<div id="panel" style="width: 300px; float: left;"></div>
<div id="map" style="width: 300px; height: 300px;"></div>
<script type="text/javascript">
calcRoute();
function calcRoute() {
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 7,
mapTypeId: google.maps.MapTypeId.ROADMAP,
});
directionsDisplay.setMap(map);
var request = {
origin: 'Potsdamer Platz, 10785 Berlin',
destination: 'Falckensteinstraße, Berlin',
travelMode: google.maps.DirectionsTravelMode.TRANSIT,
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
writeDirectionsSteps(directionsDisplay.directions.routes[0].legs[0].steps);
}
else {
console.error('DirectionsStatus is ' + status);
}
});
}
function writeDirectionsSteps(steps) {
var directions = document.getElementById('panel');
directions.innerHTML = '';
for (var i = 0; i < steps.length; i++) {
directions.innerHTML += '
' + steps[i].instructions + '
' + steps[i].distance.text;
if (typeof steps[i].transit !== "undefined") {
directions.innerHTML += '
' + steps[i].transit.arrival_stop.name;
}
}
}
</script>
</body>
</html>
(代码基于:Google Maps Api v3: How to change the Default waypoint markers in the Directions (set)Panel?)
任何帮助都很受欢迎!
1 回答
你需要防御性地编码 .
.transit
属性不会在所有步骤中出现,只有涉及实际过境本身的那些(即不在步行到站和从站出发) .proof of concept fiddle
code snippet: