@@ -37,16 +37,17 @@ function _parseInteger(intStr) {
3737}
3838
3939function formatLink ( options ) {
40+ // Output all waypoints as loc parameters, using empty string for missing
41+ var locs = undefined ;
42+ if ( options . waypoints ) {
43+ locs = options . waypoints . map ( function ( wp ) {
44+ return wp && wp . latLng ? _formatCoord ( wp . latLng ) : '' ;
45+ } ) ;
46+ }
4047 return qs . stringify ( {
4148 z : options . zoom ,
4249 center : options . center ? _formatCoord ( options . center ) : undefined ,
43- loc : options . waypoints ? options . waypoints . filter ( function ( wp ) {
44- return wp . latLng !== undefined ;
45- } )
46- . map ( function ( wp ) {
47- return wp . latLng ;
48- } )
49- . map ( _formatCoord ) : undefined ,
50+ loc : locs ,
5051 hl : options . language ,
5152 alt : options . alternative ,
5253 df : options . units ,
@@ -65,16 +66,12 @@ function parseLink(link) {
6566 parsedValues . center = q . center && _parseCoord ( q . center ) ;
6667 if ( q . loc ) {
6768 if ( q . loc . constructor === Array ) {
68- // more than one loc is given
69- parsedValues . waypoints = q . loc . filter ( function ( loc ) {
70- return loc != "" ;
71- } ) . map ( _parseCoord ) . map (
72- function ( coord ) {
73- return L . Routing . waypoint ( coord ) ;
74- }
75- ) ;
69+ // any number of locs: start, via, end, etc.
70+ parsedValues . waypoints = q . loc . map ( function ( loc ) {
71+ return loc && loc !== '' ? L . Routing . waypoint ( _parseCoord ( loc ) ) : L . Routing . waypoint ( null ) ;
72+ } ) ;
7673 } else if ( q . loc . constructor === String ) {
77- // exactly one loc is given
74+ // exactly one loc is given (backward compatibility)
7875 parsedValues . waypoints = [ L . Routing . waypoint ( _parseCoord ( q . loc ) ) ] ;
7976 }
8077 }
0 commit comments