代码之家  ›  专栏  ›  技术社区  ›  user_78361084

如何预先填充地图盒方向API的起点和终点?

  •  1
  • user_78361084  · 技术社区  · 6 年前

    我有:

    <!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 回复  |  直到 5 年前
        1
  •  3
  •   stdob--    6 年前

    你需要 setOrigin setDestination 方法来自 MapboxDirections 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/ ]