2016-03-26 7 views
1

Ich verwende Mapbox Directions in einer Javascript-App, um Geometrie und Routing-Daten (zwischen zwei Lat/lange Paare) erfolgreich an den Browser zurückgeben. Ich versuche schließlich, die Routen-Polylinie anzuzeigen, die sie auf einer Karte verbindet, aber ich kann auf die Richtungsdaten des Ergebnisobjekts nicht zugreifen, obwohl die Daten vorhanden sind. HierMapbox Richtungen: So extrahieren Wegbeschreibung Daten aus Ergebnis

ist die Anforderungs-Code:

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); 

Notiere die console.dir Linie. Dies ist, was ich in der Konsole für die Routen sehen:

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

Dies ist, was ich in der Konsole für die route.destination sehen, route.options und route.origin Objekte:

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

Aber wenn Ich versuche route.directions zu sehen, es ist nicht definiert.

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

Wenn „Öffnen“ das ganze Strecke Objekt in der Konsole (über console.dir) Ich sehe die Richtungen Daten die ich suche:

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

Warum sollte dies „undefiniert“ sein, wenn Zugriff auf es mit route.directions, vor allem, wenn ich Inhalte der anderen "Unterobjekte" (zB route.options) mit der gleichen Punktsyntax sehen kann? Schließlich

, wenn ich "stringify" die Route Objekt var routeJson = JSON.stringify(route); Ich sehe dies:

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

Wieder keine Richtungen Inhalt! Irgendwelche Gedanken würden sehr geschätzt werden!

+0

Vielleicht werden diese Informationsbits zurückgegeben, wenn Sie die Parameter 'instructions' und/oder' geometry' übergeben? Die Dokumentation ist ein wenig vage ... –

Antwort

0

Wo finden Sie diese API mit einer query Funktion? Nach dem Directions API documentation on Github, sollten Sie es wie folgt anrufen:

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); 
}); 

Ich vermute, dass die geometry: 'polyline vorbei ist, was Sie benötigen, um sicherzustellen erhalten Sie Geometrieinformationen in der Antwort enthalten.

+0

Ich habe die Funktion directions.query() aus [mapbox-directions.js github] (https://github.com/mapbox/mapbox-directions.js/blob/mb- Seiten/API.md). Ich habe zuvor die MapboxClient-Technik ausprobiert, habe aber den Fehler "MapboxClient ist nicht definiert" erhalten. Ich schaue mir das nochmal an ... – tomBeach

+0

Oh, das ist ein Leaflet-Plugin. –

Verwandte Themen