如何预填地图框路线API的起点和终点?

时间:2018-07-26 03:04:21

标签: javascript maps mapbox mapbox-gl-js mapbox-gl

我有:

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8' />
    <title>Display driving directions</title>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
    <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.47.0/mapbox-gl.js'></script>
    <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.47.0/mapbox-gl.css' rel='stylesheet' />
    <style>
        body { margin:0; padding:0; }
        #map { position:absolute; top:0; bottom:0; width:100%; }
    </style>
</head>
<body>

<script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v3.1.3/mapbox-gl-directions.js'></script>
<link rel='stylesheet' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v3.1.3/mapbox-gl-directions.css' type='text/css' />
<div id='map'></div>

<script>
mapboxgl.accessToken = 'pk.eyJ1IjoiYndhZGFtc29uIiwiYSI6ImNqajZhNm1idDFzMjIza3A2Y3ZmdDV6YWYifQ.9NhptR7a9D0hzWXR51y_9w';
var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/streets-v9',
    center: [-79.4512, 43.6568],
    zoom: 13
});

map.addControl(new MapboxDirections({
    accessToken: mapboxgl.accessToken
}), 'top-left');
</script>

</body>
</html>

这给了我一张带有行车路线的漂亮地图,但是我想在渲染的地图中预填“起点”和“目的地”。我该如何通过javascript做到这一点,以便用户不必两次输入其信息?

1 个答案:

答案 0 :(得分:3)

您需要setOrigin中的setDestinationMapboxDirections API方法:

map.on('load', function() {
  var directions = new MapboxDirections({
    accessToken: mapboxgl.accessToken
  });
  map.addControl(directions, 'top-left');

  directions.setOrigin('Brockton Avenue, Toronto');
  directions.setDestination('East York Avenue, Toronto');
});

[https://jsfiddle.net/me3kj9td/]