mirror of
https://github.com/DerTyp7/street-map-typescript.git
synced 2025-10-29 12:52:11 +01:00
added nominatim.service.ts
This commit is contained in:
@@ -1,19 +1,14 @@
|
||||
import { Component, OnInit, AfterViewInit, NgModule } from '@angular/core';
|
||||
import { Component, OnInit, AfterViewInit } from '@angular/core';
|
||||
import { Nominatim } from './interfaces/nominatim';
|
||||
import { NominatimService } from './nominatim.service';
|
||||
|
||||
import { defaults as defaultControls } from 'ol/control';
|
||||
import { fromLonLat } from 'ol/proj';
|
||||
import { Observable, throwError } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
|
||||
import Map from 'ol/Map';
|
||||
import View from 'ol/View';
|
||||
import TileLayer from 'ol/layer/Tile';
|
||||
import XYZ from 'ol/source/XYZ';
|
||||
import ZoomToExtent from 'ol/control/ZoomToExtent';
|
||||
import { Nominatim } from './interfaces/nominatim';
|
||||
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
@@ -25,14 +20,14 @@ export class AppComponent implements AfterViewInit, OnInit {
|
||||
title = "Street Map";
|
||||
map: Map;
|
||||
|
||||
|
||||
constructor(private http: HttpClient) { }
|
||||
constructor(private nominatimService: NominatimService) { }
|
||||
|
||||
|
||||
getValue(valueFrom:string, valueTo:string){
|
||||
// Gets called in "app.component.html" when an input changes its value
|
||||
getValue(valueFrom:string, valueTo:string): void{
|
||||
console.log("From " + valueFrom + " to " + valueTo);
|
||||
this.http.get<Nominatim>("https://nominatim.openstreetmap.org/search.php?format=jsonv2&q=" + valueFrom)
|
||||
.subscribe((response: Nominatim) => console.log(response))
|
||||
|
||||
this.nominatimService.sendQueryRequest(valueFrom)
|
||||
.subscribe((response: Nominatim[]) => console.log(response));
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
// Nominatim JSON object to TypeScript interface
|
||||
export interface Nominatim {
|
||||
boundingbox: Array<string>;
|
||||
category: string;
|
||||
|
||||
16
src/app/nominatim.service.spec.ts
Normal file
16
src/app/nominatim.service.spec.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { NominatimService } from './nominatim.service';
|
||||
|
||||
describe('NominatimService', () => {
|
||||
let service: NominatimService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(NominatimService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
18
src/app/nominatim.service.ts
Normal file
18
src/app/nominatim.service.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Nominatim } from './interfaces/nominatim';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
|
||||
// communicates with Nominatim (https://nominatim.org/)
|
||||
export class NominatimService{
|
||||
constructor(private http: HttpClient) { }
|
||||
|
||||
// sends a query request to Nominatim and gets response (https://nominatim.org/release-docs/develop/api/Search/)
|
||||
sendQueryRequest(q: string): Observable<Nominatim[]> {
|
||||
return this.http.get<Nominatim[]>("https://nominatim.openstreetmap.org/search.php?format=jsonv2&q=" + q);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user