2016-03-26 48 views
1

我在JavaScript应用程序中使用Mapbox方向,以成功地将几何数据和路由数据(在两对经/长对之间)返回给浏览器。我试图最终显示连接它们的地图上的路线多段线,但即使数据在那里,我也无法从结果对象访问路线数据。Mapbox方向:如何从结果中提取方向数据

这里是请求代码:

L.mapbox.accessToken ='pk.eyJ1Ij...9Uk_Z8JqMOQ'; 
    L.mapbox.id = 'tom...ibb'; 
    var startLatLng = L.latLng(38.935899, -77.022353); 
    var endLatLng = L.latLng(38.90, -77.10); 
    var directions = L.mapbox.directions(); 
    directions.setOrigin(startLatLng); 
    directions.setDestination(endLatLng); 
    var route = directions.query(); 
    console.dir(route); 

注意console.dir线。这是我在控制台中看到的路线:

_initHooksCalled:true 
    _query:null 
    _requests:Array[0] 
    _waypoints:Array[0] 
    destination:Object 
    directions:Object 
    options:Object 
    origin:Object 

这是我在控制台中看到的route.destination,route.options和route.origin对象:

console.log(route.destination); 
     => Object {type: "Feature", geometry: Object, properties:... 
    console.log(route.origin); 
     => Object {type: "Feature", geometry: Object, properties:... 
    console.log(route.options); 
     => Object {units: "imperial"} 

但是,当我试图看到route.directions,它是未定义的。

console.log(route.directions); 
     => undefined 

当“打开”控制台整个路由对象(通过console.dir)我看到了方向的数据我要找:访问时

directions:Object 
     destination:Object 
     origin:Object 
     routes:Array[2] 
      0:Object 
       distance:10460 
       duration:862 
       geometry:Object 
       steps:Array[26] 
       ... 

为什么会变成这样“不确定”它与route.directions,特别是当我可以看到其他“子对象”(例如route.options)使用相同的点语法的内容?

最后,当我 “字符串” 路由对象var routeJson = JSON.stringify(route);我看到这一点:

{"options":{ 
     "units":"imperial" 
    }, 
    "_waypoints":[], 
    "_initHooksCalled":true, 
    "origin":{ 
     "type":"Feature", 
     "geometry":{ 
      "type":"Point", 
      "coordinates":[-77.022353,38.935899] 
     }, 
     "properties":{"query":[-77.022353,38.935899]} 
    }, 
    "destination":{ 
     "type":"Feature", 
     "geometry":{ 
      "type":"Point", 
      "coordinates":[-77.1,38.9]}, 
     "properties":{"query":[-77.1,38.9]} 
    }, 
    "_requests":[], 
    "_query":{}} 

同样,没有方向的内容!任何想法将不胜感激!

+0

也许如果你传递'instructions'和/或'geometry'参数,这些信息将被返回?该文档有点模糊...... –

回答

0

你在哪里找到这个API与query函数?按照Directions API documentation on Github,你应该调用它像这样:

var mapboxClient = new MapboxClient('ACCESSTOKEN'); 
mapboxClient.getDirections(
    [ 
    { latitude: 33.6, longitude: -95.4431 }, 
    { latitude: 33.2, longitude: -95.4431 } ], 
    function(err, res) { 
    // res is a document with directions 
}); 

// With options 
mapboxClient.getDirections([ 
    { latitude: 33.6875431, longitude: -95.4431142 }, 
    { latitude: 33.6875431, longitude: -95.4831142 } 
], { 
    profile: 'mapbox.walking', 
    instructions: 'html', 
    alternatives: false, 
    geometry: 'polyline' 
}, function(err, results) { 
    console.log(results.origin); 
}); 

我怀疑,经过geometry: 'polyline是你需要确保你得到包含在响应几何信息是什么。

+0

我从[mapbox-directions.js github](https://github.com/mapbox/mapbox-directions.js/blob/mb-页/ API.md)。我之前尝试过MapboxClient技术,但得到了“MapboxClient未定义”错误。我会再看看这个... – tomBeach

+0

哦,这是一个Leaflet插件。 –

相关问题