UNPKG

@amin-karimi/agm-direction

Version:
1 lines 25.7 kB
{"version":3,"file":"agm-direction.mjs","sources":["../../../projects/agm-direction/src/lib/agm-direction.directive.ts","../../../projects/agm-direction/src/lib/agm-direction.module.ts","../../../projects/agm-direction/src/public-api.ts","../../../projects/agm-direction/src/agm-direction.ts"],"sourcesContent":["import { Directive, Input, Output, OnChanges, OnInit, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { GoogleMapsAPIWrapper } from '@amin-karimi/agm-core';\r\n\r\n@Directive({\r\n selector: 'agm-direction',\r\n})\r\nexport class AgmDirection implements OnChanges, OnInit, OnDestroy {\r\n\r\n @Input() origin: string | google.maps.Place | google.maps.LatLng | google.maps.LatLngLiteral;\r\n\r\n @Input() destination: string | google.maps.Place | google.maps.LatLng | google.maps.LatLngLiteral;\r\n\r\n @Input() travelMode?: google.maps.TravelMode;\r\n\r\n @Input() transitOptions?: google.maps.TransitOptions;\r\n\r\n @Input() drivingOptions?: google.maps.DrivingOptions;\r\n\r\n @Input() waypoints: google.maps.DirectionsWaypoint[] = [];\r\n\r\n @Input() optimizeWaypoints = true;\r\n\r\n @Input() provideRouteAlternatives = false;\r\n\r\n @Input() avoidHighways = false;\r\n\r\n @Input() avoidTolls = false;\r\n\r\n @Input() avoidFerries = false;\r\n\r\n @Input() unitSystem?: google.maps.UnitSystem;\r\n\r\n @Input() renderOptions?: google.maps.DirectionsRendererOptions;\r\n\r\n @Input() panel?: Element;\r\n\r\n @Input() markerOptions: {\r\n origin: google.maps.MarkerOptions,\r\n destination: google.maps.MarkerOptions,\r\n waypoints?: google.maps.MarkerOptions,\r\n };\r\n\r\n @Input() infoWindow: google.maps.InfoWindow;\r\n\r\n // Remove or draw direction\r\n @Input() visible = true;\r\n\r\n // Render exist direction\r\n @Input() renderRoute?: google.maps.DirectionsResult | null;\r\n\r\n // Direction change event handler\r\n @Output() onChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n // Direction response for the new request\r\n @Output() onResponse: EventEmitter<google.maps.DirectionsResult> = new EventEmitter<google.maps.DirectionsResult>();\r\n\r\n // Send a custom infowindow\r\n @Output() sendInfoWindow: EventEmitter<google.maps.InfoWindow> = new EventEmitter<google.maps.InfoWindow>();\r\n\r\n // Status of Directions Query (google.maps.DirectionsStatus.OVER_QUERY_LIMIT)\r\n @Output() status: EventEmitter<google.maps.DirectionsStatus> = new EventEmitter<google.maps.DirectionsStatus>();\r\n\r\n // Marker drag event handler\r\n @Output() originDrag: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() destinationDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public directionsService: google.maps.DirectionsService;\r\n public directionsRenderer: google.maps.DirectionsRenderer;\r\n\r\n // Use for custom marker\r\n private originMarker?: any;\r\n private destinationMarker?: any;\r\n private waypointsMarker: Array<google.maps.Marker> = [];\r\n\r\n // Use for visible flag\r\n private isFirstChange = true;\r\n\r\n constructor(\r\n private gmapsApi: GoogleMapsAPIWrapper,\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this.visible === true) {\r\n this.directionDraw();\r\n }\r\n }\r\n\r\n ngOnChanges(obj: any) {\r\n /**\r\n * When visible is false then remove the direction layer\r\n */\r\n if (!this.visible) {\r\n try {\r\n this.removeMarkers();\r\n this.removeDirections();\r\n } catch (e) { }\r\n } else {\r\n if (this.isFirstChange) {\r\n /**\r\n * When visible is false at the first time\r\n */\r\n if (typeof this.directionsRenderer === 'undefined') {\r\n this.directionDraw();\r\n }\r\n this.isFirstChange = false;\r\n return;\r\n }\r\n\r\n /**\r\n * When renderOptions are not first change then reset the display\r\n */\r\n if (typeof obj.renderOptions !== 'undefined') {\r\n if (obj.renderOptions.firstChange === false) {\r\n this.removeMarkers();\r\n this.removeDirections();\r\n }\r\n }\r\n this.directionDraw();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyMarkers();\r\n this.removeDirections();\r\n }\r\n\r\n /**\r\n * This event is fired when the user creating or updating this direction\r\n */\r\n private directionDraw() {\r\n this.gmapsApi.getNativeMap().then(_map => {\r\n\r\n // const map = _map as unknown | google.maps.Map;\r\n const map = _map;\r\n\r\n if (typeof this.directionsRenderer === 'undefined') {\r\n this.directionsRenderer = new google.maps.DirectionsRenderer(this.renderOptions);\r\n // @ts-ignore\r\n this.directionsRenderer.setMap(map);\r\n this.directionsRenderer.addListener('directions_changed', () => {\r\n this.onChange.emit(this.directionsRenderer.getDirections());\r\n });\r\n }\r\n\r\n if (typeof this.directionsService === 'undefined') {\r\n this.directionsService = new google.maps.DirectionsService();\r\n }\r\n\r\n if (typeof this.panel === 'undefined') {\r\n // @ts-ignore\r\n this.directionsRenderer.setPanel(null);\r\n } else {\r\n this.directionsRenderer.setPanel(this.panel as any);\r\n }\r\n\r\n // Render exist direction\r\n if (this.renderRoute) {\r\n this.directionsRenderer.setDirections(this.renderRoute);\r\n this.renderRoute = undefined;\r\n } else {\r\n\r\n // Request new direction\r\n this.directionsService.route({\r\n origin: this.origin,\r\n destination: this.destination,\r\n travelMode: this.travelMode || google.maps.TravelMode.DRIVING,\r\n transitOptions: this.transitOptions,\r\n drivingOptions: this.drivingOptions,\r\n waypoints: this.waypoints,\r\n optimizeWaypoints: this.optimizeWaypoints,\r\n provideRouteAlternatives: this.provideRouteAlternatives,\r\n avoidHighways: this.avoidHighways,\r\n avoidTolls: this.avoidTolls,\r\n avoidFerries: this.avoidFerries,\r\n unitSystem: this.unitSystem,\r\n }, (response: any, status) => {\r\n\r\n this.onResponse.emit(response);\r\n\r\n // Emit Query Status\r\n this.status.emit(status);\r\n\r\n /**\r\n * DirectionsStatus\r\n * https://developers.google.com/maps/documentation/javascript/directions#DirectionsStatus\r\n */\r\n switch (status) {\r\n case google.maps.DirectionsStatus.OK:\r\n\r\n this.directionsRenderer.setDirections(response);\r\n\r\n /**\r\n * Emit The DirectionsResult Object\r\n * https://developers.google.com/maps/documentation/javascript/directions?hl=en#DirectionsResults\r\n */\r\n // Custom Markers\r\n if (typeof this.markerOptions !== 'undefined') {\r\n\r\n this.destroyMarkers();\r\n\r\n // Set custom markers\r\n const _route = response.routes[0].legs[0];\r\n try {\r\n // Origin Marker\r\n if (typeof this.markerOptions.origin !== 'undefined') {\r\n this.markerOptions.origin.map = map;\r\n this.markerOptions.origin.position = _route.start_location;\r\n this.originMarker = this.setMarker(\r\n map,\r\n this.originMarker,\r\n this.markerOptions.origin,\r\n _route.start_address,\r\n );\r\n\r\n if (this.markerOptions.origin.draggable) {\r\n this.originMarker.addListener('dragend', () => {\r\n this.origin = this.originMarker.position;\r\n this.directionDraw();\r\n this.originDrag.emit(this.origin);\r\n });\r\n }\r\n }\r\n // Destination Marker\r\n if (typeof this.markerOptions.destination !== 'undefined') {\r\n this.markerOptions.destination.map = map;\r\n this.markerOptions.destination.position = _route.end_location;\r\n this.destinationMarker = this.setMarker(\r\n map,\r\n this.destinationMarker,\r\n this.markerOptions.destination,\r\n _route.end_address,\r\n );\r\n if (this.markerOptions.destination.draggable) {\r\n this.destinationMarker.addListener('dragend', () => {\r\n this.destination = this.destinationMarker.position;\r\n this.directionDraw();\r\n this.destinationDrag.emit(this.destination);\r\n });\r\n }\r\n }\r\n\r\n // Waypoints Marker\r\n if (typeof this.markerOptions.waypoints !== 'undefined') {\r\n\r\n this.waypoints.forEach((waypoint, index) => {\r\n\r\n // If waypoints are not array then set all the same\r\n if (!Array.isArray(this.markerOptions.waypoints)) {\r\n this.markerOptions.waypoints!.map = map;\r\n this.markerOptions.waypoints!.position = _route.via_waypoints[index];\r\n this.waypointsMarker.push(this.setMarker(\r\n map,\r\n waypoint,\r\n this.markerOptions.waypoints,\r\n _route.via_waypoints[index],\r\n ));\r\n } else {\r\n this.markerOptions.waypoints[index].map = map;\r\n this.markerOptions.waypoints[index].position = _route.via_waypoints[index];\r\n this.waypointsMarker.push(this.setMarker(\r\n map,\r\n waypoint,\r\n this.markerOptions.waypoints[index],\r\n _route.via_waypoints[index],\r\n ));\r\n }\r\n\r\n }); // End forEach\r\n\r\n }\r\n } catch (err) {\r\n console.error('MarkerOptions error.', err);\r\n }\r\n }\r\n\r\n break;\r\n\r\n case google.maps.DirectionsStatus.OVER_QUERY_LIMIT:\r\n console.warn('The webpage has sent too many requests within the allowed time period.');\r\n break;\r\n default:\r\n // console.warn(status);\r\n break;\r\n } // End switch\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Custom Origin and Destination Icon\r\n * @param map map\r\n * @param marker marker\r\n * @param markerOpts properties\r\n * @param content marker's infowindow content\r\n * @returns new marker\r\n * @memberof AgmDirection\r\n */\r\n private setMarker(\r\n map: google.maps.Map,\r\n marker: google.maps.Marker | google.maps.DirectionsWaypoint,\r\n markerOpts: any,\r\n content: google.maps.LatLng | string\r\n ): google.maps.Marker {\r\n if (typeof this.infoWindow === 'undefined') {\r\n this.infoWindow = new google.maps.InfoWindow();\r\n this.sendInfoWindow.emit(this.infoWindow);\r\n }\r\n\r\n marker = new google.maps.Marker(markerOpts);\r\n // https://developers.google.com/maps/documentation/javascript/reference/marker?hl=zh-tw#MarkerOptions.clickable\r\n if (marker.getClickable()) {\r\n marker.addListener('click', () => {\r\n const infowindoContent: string = typeof markerOpts.infoWindow === 'undefined' ? content : markerOpts.infoWindow;\r\n this.infoWindow.setContent(infowindoContent);\r\n this.infoWindow.open(map, marker as google.maps.MVCObject);\r\n });\r\n }\r\n return marker;\r\n }\r\n\r\n /**\r\n * This event is fired when remove markers\r\n */\r\n private removeMarkers(): void {\r\n if (typeof this.originMarker !== 'undefined') {\r\n this.originMarker.setMap(null);\r\n }\r\n if (typeof this.destinationMarker !== 'undefined') {\r\n this.destinationMarker.setMap(null);\r\n }\r\n this.waypointsMarker.forEach((w: any) => {\r\n if (typeof w !== 'undefined') {\r\n w.setMap(null);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This event is fired when remove directions\r\n */\r\n private removeDirections(): void {\r\n if (this.directionsRenderer !== undefined) {\r\n // @ts-ignore\r\n this.directionsRenderer.setPanel(null);\r\n this.directionsRenderer.setMap(null);\r\n // @ts-ignore\r\n this.directionsRenderer = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * This event is fired when destroy markers\r\n */\r\n private destroyMarkers(): void {\r\n // Remove origin markers\r\n try {\r\n if (typeof this.originMarker !== 'undefined') {\r\n google.maps.event.clearListeners(this.originMarker, 'click');\r\n if (this.markerOptions.origin.draggable) {\r\n google.maps.event.clearListeners(this.originMarker, 'dragend');\r\n }\r\n }\r\n if (typeof this.destinationMarker !== 'undefined') {\r\n google.maps.event.clearListeners(this.destinationMarker, 'click');\r\n if (this.markerOptions.origin.draggable) {\r\n google.maps.event.clearListeners(this.destinationMarker, 'dragend');\r\n }\r\n }\r\n this.waypointsMarker.forEach((w: any) => {\r\n if (typeof w !== 'undefined') {\r\n google.maps.event.clearListeners(w, 'click');\r\n }\r\n });\r\n this.removeMarkers();\r\n\r\n } catch (err) {\r\n console.error('Can not reset custom marker.', err);\r\n }\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { AgmDirection } from './agm-direction.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n AgmDirection,\r\n ],\r\n exports: [\r\n AgmDirection,\r\n ]\r\n})\r\nexport class AgmDirectionModule {\r\n public static forRoot(): ModuleWithProviders<AgmDirectionModule> {\r\n return {\r\n ngModule: AgmDirectionModule,\r\n };\r\n }\r\n\r\n public static forChild(): ModuleWithProviders<AgmDirectionModule> {\r\n return {\r\n ngModule: AgmDirectionModule,\r\n };\r\n }\r\n}\r\n","/*\n * Public API Surface of agm-direction\n */\nexport { AgmDirection } from './lib/agm-direction.directive';\nexport { AgmDirectionModule } from './lib/agm-direction.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}