【问题标题】:Mapbox directions: how to extract directions data from resultMapbox 方向:如何从结果中提取方向数据
【发布时间】:2016-03-26 13:45:01
【问题描述】:

我在 javascript 应用程序中使用 Mapbox Directions 成功地将几何和路由数据(在两个纬度/经度对之间)返回到浏览器。我试图显示 - 最终 - 在地图上连接它们的路线折线,但即使数据存在,我也无法从结果对象访问方向数据。

这里是请求代码:

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":{}}

再一次,没有路线内容!任何想法将不胜感激!

【问题讨论】:

  • 也许如果你传递instructions 和/或geometry 参数,那些信息位会被返回?文档有点模糊......

标签: javascript mapbox directions


【解决方案1】:

您在哪里可以找到这个带有query 函数的 API?根据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 是您需要确保获得响应中包含的几何信息。

【讨论】:

  • 我从mapbox-directions.js github 得到了directions.query() 函数。我之前尝试过 MapboxClient 技术,但出现“未定义 MapboxClient”错误。同时我会再看一遍......
  • 哦,这是一个传单插件。
猜你喜欢
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
相关资源
最近更新 更多