2016-03-26 1 views
1

Я использую Mapbox Directions в приложении javascript, чтобы успешно возвращать данные геометрии и маршрутизации (между двумя лат/длинными парами) в браузер. Я пытаюсь отобразить - в конечном итоге - полилинию маршрута, соединяющую их на карте, но я не могу получить доступ к данным маршрутов из объекта результата, даже если данные есть.Направления карт: как извлечь данные направления из результата

Вот код запроса:

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) с использованием того же синтаксиса точек?

Наконец, когда я "stringify" объект маршрута 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

Возможно, если вы передадите параметры 'инструкции' и/или' 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

У меня есть функция direction.query() из [mapbox-directions.js github] (https://github.com/mapbox/mapbox-directions.js/blob/mb- страницы/API.md). Ранее я использовал метод MapboxClient, но получил ошибку «MapboxClient is not defined». Я еще раз посмотрю на это ... – tomBeach

+0

О, это плагин для лифтов. –

 Смежные вопросы

  • Нет связанных вопросов^_^