在GoogleMaps DistanceMatrix API中使用TransitOptions Literal



美好的一天!

我对 JavaScript 很陌生,并且已经接触到它,因为我认为它可以帮助自动化我正在从事的项目。从本质上讲,我正在绘制两个巴西城市(维多利亚和弗洛里亚纳波利斯(的地图,并寻找一系列点之间的交通时间。GIS 工具适用于行驶距离/时间,但这些城市没有交通选项(TravelTime 平台在巴西尚不可用(。

我相信我能做的是利用Google Maps JavaScript API和Distance Matrix Service来构建一个起点/目的地(O/D(对数组。我想我已经通过一些入门学习和谷歌地图示例的帮助完成了这一部分。我的计划是在整理完这个项目后,用我需要的数字扩展起点和目的地变量。

我接下来想去的地方是使用 TransitOptions 文字始终将出发时间设置为上午 8 点(即高峰时间(。我不希望数据根据我运行脚本的时间而更改。

附件是我到目前为止必须到达的地方,但我 99% 确定我错误地使用了 TransitOptions:

<body>
<div id="right-panel">
<div id="inputs">
<pre>
var origin1 = {lat: -27.524, lng: -48.642};
var destinationA = {lat: -27.594, lng: -48.554};
</pre>
</div>
<div>
<strong>Results</strong>
</div>
<div id="output"></div>
</div>
<div id="map"></div>
<script>
let departurewindow = new Date('2020-03-10T08:00:00')
function initMap() {
var bounds = new google.maps.LatLngBounds;
var markersArray = [];
var origin1 = {lat: -27.524, lng: -48.642};
var destinationA = {lat: -27.594, lng: -48.554};
var destinationIcon = 'https://chart.googleapis.com/chart?' +
'chst=d_map_pin_letter&chld=D|FF0000|000000';
var originIcon = 'https://chart.googleapis.com/chart?' +
'chst=d_map_pin_letter&chld=O|FFFF00|000000';
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -27.50, lng: -48.5},
zoom: 10
});
var geocoder = new google.maps.Geocoder;
var service = new google.maps.DistanceMatrixService;
service.getDistanceMatrix({
origins: [origin1],
destinations: [destinationA],
travelMode: 'TRANSIT',
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false,
departureTime: departurewindow,
}, function(response, status) {
if (status !== 'OK') {
alert('Error was: ' + status);
} else {
var originList = response.originAddresses;
var destinationList = response.destinationAddresses;
var outputDiv = document.getElementById('output');
outputDiv.innerHTML = '';
deleteMarkers(markersArray);
var showGeocodedAddressOnMap = function(asDestination) {
var icon = asDestination ? destinationIcon : originIcon;
return function(results, status) {
if (status === 'OK') {
map.fitBounds(bounds.extend(results[0].geometry.location));
markersArray.push(new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: icon
}));
} else {
alert('Geocode was not successful due to: ' + status);
}
};
};
for (var i = 0; i < originList.length; i++) {
var results = response.rows[i].elements;
geocoder.geocode({'address': originList[i]},
showGeocodedAddressOnMap(false));
for (var j = 0; j < results.length; j++) {
geocoder.geocode({'address': destinationList[j]},
showGeocodedAddressOnMap(true));
outputDiv.innerHTML += originList[i] + ' to ' + destinationList[j] +
': ' + results[j].distance.text + ' in ' +
results[j].duration.text + '<br>';
}
}
}
});
}
function deleteMarkers(markersArray) {
for (var i = 0; i < markersArray.length; i++) {
markersArray[i].setMap(null);
}
markersArray = [];
}
</script>

departureTime:应该是 TransitOptions 对象文本中的字段,而不是 DistanceMatrixRequest 对象文本中的字段。

var transitOptions = {departureTime: departurewindow};

service.getDistanceMatrix({
origins: [origin1],
destinations: [destinationA],
travelMode: 'TRANSIT',
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false,
transitOptions: transitOptions  
}, function(response, status) {});

下面是上面代码段的示例代码。

相关内容

  • 没有找到相关文章

最新更新