2016-03-26 13 views
1

javascriptアプリでMapbox Directionsを使用して、ジオメトリとルーティングデータ(2つの緯度/経度のペアの間)をブラウザに正常に返します。私は地図上にそれらを接続するルートポリラインを表示しようとしていますが、データが存在していても結果オブジェクトから方向データにアクセスすることはできません。ここで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ラインに注意してください。

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

しかし:

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

これは私がroute.destination、route.optionsとroute.originオブジェクトのためのコンソールで見るものである:これは私がルートをコンソールに表示するものです私はroute.directionsを見ようとします、それは未定義です。

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

アクセスしたときに、なぜこれが「未定義」のようになります。「オープニング」(console.dir経由)コンソールで、全体のルートオブジェクトは私が探しています方向のデータを参照してください

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

それは同じドット構文を使用して他の "サブオブジェクト"(例えばroute.options)の内容を見ることができるとき、特にroute.directionsで?私はルートオブジェクト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":{}} 

再び、NO方向のコンテンツを!どんな考えでも大歓迎です!

+0

おそらく 'instructions'や' geometry'パラメータを渡すと、それらのビットが返されますか?ドキュメントは少し曖昧です... –

答えて

0

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を渡すと、あなたが応答に含まジオメトリ情報を得ることを確認するために必要なものであると思われます。

+0

[mapbox-directions.js github]からdirections.query()関数を取得しました(https://github.com/mapbox/mapbox-directions.js/blob/mb- pages/API.md)。以前MapboxClientテクニックを試しましたが、 "MapboxClientが定義されていません"というエラーが出ました。私はその間にもう一度見てみましょう... – tomBeach

+0

ああ、それはリーフレットのプラグインです。 –