UNPKG

28.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"angular-geocoder.js","sources":["ng://angular-geocoder/app/geocoder/geocoder.service.ts","ng://angular-geocoder/app/geocoder/geocoder.component.ts","ng://angular-geocoder/app/geocoder/geocoder.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { SuggestResponse,\r\n ReverseOptions,\r\n ReverseGeometry,\r\n ReverseResponse,\r\n SuggestOptions,\r\n LookupOptions,\r\n LookupResponse,\r\n SuggestObject} from './locatieserver.model';\r\n\r\nimport * as GeoJSON from 'geojson';\r\nimport * as terraformerWktParser from 'terraformer-wkt-parser';\r\n@Injectable()\r\nexport class GeocoderService {\r\n public geocoderBaseUrl = 'https://geodata.nationaalgeoregister.nl/locatieserver/v3';\r\n constructor(\r\n private http: HttpClient,\r\n ) {\r\n\r\n }\r\n\r\n public suggest(query: string, options?: SuggestOptions) {\r\n let params = {\r\n q: query,\r\n fq: '*', // Also get percelen\r\n start: 0,\r\n rows: 10,\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options);\r\n }\r\n\r\n return this.http.get(`${this.geocoderBaseUrl}/suggest?`, {params: params as any})\r\n .toPromise().then((suggestResultObject: SuggestResponse) => {\r\n const collations = this.formatCollations(suggestResultObject.spellcheck.collations);\r\n const places = this.formatPlaces(suggestResultObject);\r\n return {collations, places};\r\n });\r\n }\r\n\r\n public suggest$(query: string, options?: SuggestOptions) {\r\n let params = {\r\n q: query,\r\n fq: '*', // Also get percelen\r\n start: 0,\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options);\r\n }\r\n\r\n return this.http.get(`${this.geocoderBaseUrl}/suggest?`, {params: params as any})\r\n .pipe(\r\n map((suggestResultObject: SuggestResponse) => {\r\n const collations = this.formatCollations(suggestResultObject.spellcheck.collations);\r\n const places = this.formatPlaces(suggestResultObject);\r\n return {collations, places};\r\n })\r\n );\r\n }\r\n\r\n\r\n public lookup(id: string, options?: LookupOptions) {\r\n let params = {\r\n id: id,\r\n fl: '*'\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options);\r\n }\r\n\r\n return this.http.get(`${this.geocoderBaseUrl}/lookup?`, {params: params as any}).toPromise().then((lookupResponse: LookupResponse) => {\r\n return this.formatLookupResponse(lookupResponse);\r\n });\r\n }\r\n\r\n public lookup$(id: string, options?: LookupOptions) {\r\n let params = {\r\n id: id,\r\n fl: '*'\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options);\r\n }\r\n\r\n return this.http.get(`${this.geocoderBaseUrl}/lookup?`, {params: params as any}).pipe(\r\n map((lookupResponse: LookupResponse) => this.formatLookupResponse(lookupResponse))\r\n );\r\n }\r\n\r\n public free(searchTerm: string, options?: SuggestOptions) {\r\n let params = {\r\n q: searchTerm,\r\n fl: '*',\r\n fq: '*',\r\n rows: 10,\r\n start: 0,\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options);\r\n }\r\n\r\n return this.http.get(`${this.geocoderBaseUrl}/free?`, {params: params as any})\r\n .toPromise().then((freeResponse: ReverseResponse) => {\r\n return this.formatReverseResponse(freeResponse);\r\n });\r\n }\r\n\r\n public free$(searchTerm: string, options?: SuggestOptions) {\r\n let params = {\r\n q: searchTerm,\r\n fl: '*',\r\n fq: '*',\r\n rows: 10,\r\n start: 0,\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options);\r\n }\r\n\r\n return this.http.get(`${this.geocoderBaseUrl}/free?` , {params: params as any}).pipe(\r\n map((freeResponse: ReverseResponse) => this.formatReverseResponse(freeResponse))\r\n );\r\n }\r\n\r\n public reverse(location: ReverseGeometry, options?: ReverseOptions) {\r\n let params = {\r\n type: 'adres',\r\n fq: '*',\r\n fl: '*',\r\n rows: 10,\r\n distance: 200 // meter,\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options, location);\r\n }\r\n\r\n const reverseUrl = 'http://test.geodata.nationaalgeoregister.nl/locatieserver/revgeo?';\r\n return this.http.get(reverseUrl, {params: params as any}).toPromise().then((reverseResponse: ReverseResponse) => {\r\n return this.formatReverseResponse(reverseResponse);\r\n });\r\n }\r\n\r\n public reverse$(location: ReverseGeometry, options?: ReverseOptions) {\r\n let params = {\r\n type: 'adres',\r\n fq: '*',\r\n fl: '*',\r\n rows: 10,\r\n distance: 200 // meter,\r\n };\r\n\r\n if (options) {\r\n params = Object.assign(params, options, location);\r\n }\r\n\r\n const reverseUrl = 'http://test.geodata.nationaalgeoregister.nl/locatieserver/revgeo?';\r\n return this.http.get(reverseUrl, {params: params as any}).pipe(\r\n map((reverseResponse: ReverseResponse) => this.formatReverseResponse(reverseResponse))\r\n );\r\n }\r\n\r\n private formatCollations(collations) {\r\n const parsedCollations = [];\r\n for (let i = 0; i < collations.length; i += 2) {\r\n const collation = {\r\n id: i,\r\n naam: collations[i + 1].misspellingsAndCorrections[1],\r\n weergavenaam: `${collations[i + 1].hits} resultaten gevonden voor <strong> ${collations[i + 1].misspellingsAndCorrections[1]} </strong>`,\r\n hits: collations[i + 1].hits,\r\n };\r\n parsedCollations.push(collation);\r\n }\r\n return parsedCollations;\r\n }\r\n\r\n private formatPlaces(suggestResponse: SuggestResponse) {\r\n const places = suggestResponse.response.docs.map((place: SuggestObject) => {\r\n return {\r\n ...place,\r\n highlight: suggestResponse.highlighting[place.id].suggest[0]\r\n };\r\n });\r\n return places;\r\n }\r\n\r\n /**\r\n * Parse WKT in lookup response.\r\n */\r\n private formatLookupResponse(lookupResponse: LookupResponse) {\r\n const formatted = lookupResponse.response.docs.map((lookupResult) => {\r\n const formattedLookupResult = lookupResult;\r\n\r\n if (lookupResult.centroide_ll) {\r\n formattedLookupResult.centroide_ll = terraformerWktParser.parse(lookupResult.centroide_ll);\r\n }\r\n\r\n if (lookupResult.centroide_rd) {\r\n formattedLookupResult.centroide_rd = terraformerWktParser.parse(lookupResult.centroide_rd);\r\n }\r\n\r\n if (lookupResult.geometrie_rd) {\r\n formattedLookupResult.geometrie_rd = terraformerWktParser.parse(lookupResult.geometrie_rd);\r\n }\r\n\r\n if (lookupResult.geometrie_ll) {\r\n formattedLookupResult.geometrie_ll = terraformerWktParser.parse(lookupResult.geometrie_ll);\r\n }\r\n\r\n return formattedLookupResult;\r\n });\r\n\r\n return formatted[0] || {};\r\n }\r\n\r\n private formatReverseResponse(lookupResultObject: ReverseResponse) {\r\n const formatted = lookupResultObject.response.docs.map((reverseResult) => {\r\n const formattedLookupResult = reverseResult;\r\n if (reverseResult.centroide_ll) {\r\n formattedLookupResult.centroide_ll = terraformerWktParser.parse(reverseResult.centroide_ll);\r\n }\r\n\r\n if (reverseResult.centroide_rd) {\r\n formattedLookupResult.centroide_rd = terraformerWktParser.parse(reverseResult.centroide_rd);\r\n }\r\n\r\n if (reverseResult.geometrie_rd) {\r\n formattedLookupResult.geometrie_rd = terraformerWktParser.parse(reverseResult.geometrie_rd);\r\n }\r\n\r\n if (reverseResult.geometrie_ll) {\r\n formattedLookupResult.geometrie_ll = terraformerWktParser.parse(reverseResult.geometrie_ll);\r\n }\r\n formattedLookupResult.highlight = reverseResult.weergavenaam;\r\n return formattedLookupResult;\r\n });\r\n\r\n return formatted;\r\n }\r\n\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit, AfterViewInit, ViewChild, ElementRef, OnDestroy, HostListener, OnChanges, SimpleChanges, NgZone} from '@angular/core';\r\nimport { GeocoderService } from './geocoder.service';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { debounceTime, switchMap, distinctUntilChanged, filter } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\nimport { SuggestOptions } from './locatieserver.model';\r\nimport { DomEvent} from 'leaflet';\r\n// Leaflet requires the old school way for importing\r\n\r\n@Component({\r\n styleUrls: ['geocoder.component.scss'],\r\n templateUrl: 'geocoder.component.html',\r\n selector: 'geocoder'\r\n})\r\n\r\nexport class GeocoderComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n @ViewChild('geocoder', {static: false}) private geocoderRef: ElementRef;\r\n @Input() type: string;\r\n @Input() searchInput: string;\r\n @Input() placeholder: string;\r\n @Input() resultCountLimit = 10;\r\n @Input() resultFieldsToShow: Array<string> = [];\r\n @Output() placeFound: EventEmitter<any> = new EventEmitter<any>();\r\n public formattedPlaceholder = '';\r\n public resultsVisible = true;\r\n public searchField: FormControl;\r\n public searchForm: FormGroup;\r\n\r\n public places = [];\r\n public collations = [];\r\n public searchThreshold = 2;\r\n public foundPlace: any = null;\r\n public selectedItem = [];\r\n public selectedIndex = -1;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n @HostListener('document:click', ['$event']) clickout(event) {\r\n if (this.geocoderRef.nativeElement.contains(event.target)) {\r\n this.showResults();\r\n } else {\r\n this.hideResults();\r\n }\r\n }\r\n\r\n constructor(\r\n public geocoderService: GeocoderService,\r\n private zone: NgZone\r\n ) {\r\n this.searchField = new FormControl();\r\n this.searchForm = new FormGroup({search: this.searchField});\r\n\r\n this.subscriptions.push(\r\n this.subscribeToSearchFieldValueChanges(),\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.formattedPlaceholder = this.formatPlaceholder(this.placeholder);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.zone.runOutsideAngular(() => {\r\n DomEvent.disableClickPropagation(this.geocoderRef.nativeElement);\r\n DomEvent.disableScrollPropagation(this.geocoderRef.nativeElement);\r\n });\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.searchInput) {\r\n this.searchField.setValue(changes.searchInput.currentValue);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n private subscribeToSearchFieldValueChanges() {\r\n return this.searchField.valueChanges.pipe(\r\n filter(searchInput => searchInput.length > this.searchThreshold),\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n switchMap(searchInput => this.suggest(searchInput))\r\n ).subscribe(suggestResponse => {\r\n this.places = suggestResponse.places;\r\n this.collations = suggestResponse.collations;\r\n }); // Actual call is fired.\r\n }\r\n\r\n private suggest(searchTerm: string) {\r\n const flArray = ['id', 'score', 'type', 'weergavenaam', ...this.resultFieldsToShow];\r\n const params = {\r\n fq: '*:*',\r\n fl: flArray.toString(),\r\n rows: this.resultCountLimit\r\n } as SuggestOptions;\r\n if (this.type) {\r\n const replace = ',';\r\n const regex = new RegExp(replace, 'g');\r\n const query = this.type.replace(regex, ' OR ');\r\n params.fq = `type:(${query})`;\r\n }\r\n return this.geocoderService.suggest$(searchTerm, params);\r\n }\r\n\r\n public free() {\r\n const searchTerm = this.searchField.value;\r\n const params = {fq: '*:*'};\r\n if (this.type) {\r\n const replace = ',';\r\n const regex = new RegExp(replace, 'g');\r\n const query = this.type.replace(regex, ' OR ');\r\n params.fq = `type:(${query})`;\r\n }\r\n return this.geocoderService.free$(searchTerm, params).subscribe(places => {\r\n this.places = places;\r\n });\r\n }\r\n\r\n public lookup(id: string) {\r\n this.geocoderService.lookup$(id).subscribe((lookupObj) => {\r\n this.foundPlace = lookupObj;\r\n\r\n if (this.resultFieldsToShow.length > 0) {\r\n const input = this.resultFieldsToShow.map((resultFieldToShow) => {\r\n return this.foundPlace[resultFieldToShow];\r\n }).join(', ');\r\n this.fillInput(input);\r\n } else {\r\n this.fillInput(this.foundPlace.weergavenaam);\r\n }\r\n this.placeFound.emit(this.foundPlace);\r\n this.clearPlaces();\r\n });\r\n }\r\n\r\n public clear() {\r\n this.foundPlace = null;\r\n this.searchField.setValue('');\r\n this.clearPlaces();\r\n }\r\n\r\n public clearPlaces() {\r\n this.resetIndex();\r\n this.places = [];\r\n this.collations = [];\r\n }\r\n\r\n\r\n public handleEnter() {\r\n if (this.selectedIndex === -1) {\r\n return;\r\n }\r\n const selectedPlace = this.places[this.selectedIndex];\r\n this.lookup(selectedPlace.id);\r\n }\r\n\r\n public isNoResultsFound() {\r\n const reachedThreshold = (this.searchField.value && this.searchField.value.length) > this.searchThreshold;\r\n const noSuggestions = this.places.length === 0;\r\n const noResult = (this.foundPlace == null);\r\n return (reachedThreshold) && (noSuggestions) && (noResult);\r\n }\r\n\r\n public showCollations() {\r\n return this.collations.length > 0 && this.places.length === 0;\r\n }\r\n\r\n public fillInput(content: string, emitEvent = false) {\r\n this.searchField.setValue(content, {\r\n emitEvent: emitEvent\r\n });\r\n }\r\n\r\n public isHighlighted(i) {\r\n if (i === this.selectedIndex) {\r\n return true;\r\n }\r\n }\r\n\r\n public moveUp() {\r\n if (this.selectedIndex > 0) {\r\n this.selectedIndex--;\r\n }\r\n }\r\n\r\n public moveDown() {\r\n if (this.selectedIndex < this.places.length) {\r\n this.selectedIndex++;\r\n }\r\n }\r\n\r\n public resetIndex() {\r\n this.selectedIndex = -1;\r\n }\r\n\r\n public canQuery() {\r\n const searchInput = this.searchField.value;\r\n return searchInput && searchInput.length > this.searchThreshold;\r\n }\r\n\r\n public canClear() {\r\n const searchInput = this.searchField.value;\r\n return searchInput && searchInput.length > 0;\r\n }\r\n\r\n public formatPlaceholder(placeholder: string) {\r\n let placeholderText = 'Zoeken op de kaart...';\r\n\r\n if (placeholder) {\r\n placeholderText = placeholder;\r\n }\r\n return placeholderText;\r\n }\r\n\r\n public onCollationClick(name: string) {\r\n this.fillInput(name, true);\r\n }\r\n\r\n public showResults() {\r\n this.resultsVisible = true;\r\n }\r\n\r\n private hideResults() {\r\n this.resultsVisible = false;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { GeocoderComponent } from './geocoder.component';\r\nimport { GeocoderService } from './geocoder.service';\r\n\r\n\r\n@NgModule({\r\n imports: [ HttpClientModule, FormsModule, CommonModule, ReactiveFormsModule ],\r\n exports: [ GeocoderComponent ],\r\n declarations: [ GeocoderComponent ],\r\n providers: [ GeocoderService ]\r\n})\r\n\r\nexport class GeocoderModule {}\r\nexport { GeocoderService } from './geocoder.service';\r\n"],"names":["terraformerWktParser.parse","tslib_1.__decorate"],"mappings":"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"}
\No newline at end of file