@opentripplanner/core-utils 4.6.0 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/map.js +2 -1
- package/esm/map.js.map +1 -1
- package/lib/map.js +1 -0
- package/lib/map.js.map +1 -1
- package/package.json +1 -1
- package/src/map.js +2 -1
package/esm/map.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
2
|
import moment from "moment";
|
|
3
|
-
import { getPlaceName, isTransit, toSentenceCase } from "./itinerary";
|
|
3
|
+
import { getPlaceName, isTransit, isFlex, toSentenceCase } from "./itinerary";
|
|
4
4
|
export function latlngToString(latlng) {
|
|
5
5
|
return latlng && "".concat(latlng.lat.toFixed(5), ", ").concat((latlng.lng || latlng.lon).toFixed(5));
|
|
6
6
|
}
|
|
@@ -247,6 +247,7 @@ export function itineraryToTransitive(itin, companies, getRouteLabel) {
|
|
|
247
247
|
tdata.patterns.push(pattern); // add the pattern reference to the journey object
|
|
248
248
|
|
|
249
249
|
journey.segments.push({
|
|
250
|
+
arc: isFlex(leg),
|
|
250
251
|
type: "TRANSIT",
|
|
251
252
|
patterns: [{
|
|
252
253
|
pattern_id: ptnId,
|
package/esm/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/map.js"],"names":["moment","getPlaceName","isTransit","toSentenceCase","latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(itin, companies, getRouteLabel) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
|
|
1
|
+
{"version":3,"sources":["../src/map.js"],"names":["moment","getPlaceName","isTransit","isFlex","toSentenceCase","latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, isFlex, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(itin, companies, getRouteLabel) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc: isFlex(leg),\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
|
package/lib/map.js
CHANGED
|
@@ -272,6 +272,7 @@ function itineraryToTransitive(itin, companies, getRouteLabel) {
|
|
|
272
272
|
tdata.patterns.push(pattern); // add the pattern reference to the journey object
|
|
273
273
|
|
|
274
274
|
journey.segments.push({
|
|
275
|
+
arc: (0, _itinerary.isFlex)(leg),
|
|
275
276
|
type: "TRANSIT",
|
|
276
277
|
patterns: [{
|
|
277
278
|
pattern_id: ptnId,
|
package/lib/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/map.js"],"names":["latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(itin, companies, getRouteLabel) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
|
|
1
|
+
{"version":3,"sources":["../src/map.js"],"names":["latlngToString","latlng","lat","toFixed","lng","lon","coordsToString","coords","length","map","c","join","currentPositionToLocation","currentPosition","error","console","warn","latitude","longitude","name","category","stringToCoords","str","split","constructLocation","getDetailText","location","detailText","type","id","timestamp","fromNow","formatStoredPlaceName","withDetails","displayName","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import moment from \"moment\";\n\nimport { getPlaceName, isTransit, isFlex, toSentenceCase } from \"./itinerary\";\n\nexport function latlngToString(latlng) {\n return (\n latlng &&\n `${latlng.lat.toFixed(5)}, ${(latlng.lng || latlng.lon).toFixed(5)}`\n );\n}\n\nexport function coordsToString(coords) {\n return coords.length && coords.map(c => (+c).toFixed(5)).join(\", \");\n}\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n name: \"(Current Location)\",\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n name: latlngToString(latlng),\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function getDetailText(location) {\n let detailText;\n if (location.type === \"home\" || location.type === \"work\") {\n detailText = location.name;\n }\n if (location.type === \"stop\") {\n detailText = location.id;\n } else if (location.type === \"recent\" && location.timestamp) {\n detailText = moment(location.timestamp).fromNow();\n }\n return detailText;\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(itin, companies, getRouteLabel) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc: isFlex(leg),\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
|
package/package.json
CHANGED
package/src/map.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import moment from "moment";
|
|
2
2
|
|
|
3
|
-
import { getPlaceName, isTransit, toSentenceCase } from "./itinerary";
|
|
3
|
+
import { getPlaceName, isTransit, isFlex, toSentenceCase } from "./itinerary";
|
|
4
4
|
|
|
5
5
|
export function latlngToString(latlng) {
|
|
6
6
|
return (
|
|
@@ -274,6 +274,7 @@ export function itineraryToTransitive(itin, companies, getRouteLabel) {
|
|
|
274
274
|
|
|
275
275
|
// add the pattern reference to the journey object
|
|
276
276
|
journey.segments.push({
|
|
277
|
+
arc: isFlex(leg),
|
|
277
278
|
type: "TRANSIT",
|
|
278
279
|
patterns: [
|
|
279
280
|
{
|