added nominatim.service.ts

This commit is contained in:
Janis Meister
2022-01-13 11:22:32 +01:00
parent 2e17198e92
commit 5a5cea1b0e
4 changed files with 45 additions and 16 deletions

View File

@@ -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() {

View File

@@ -1,4 +1,4 @@
// Nominatim JSON object to TypeScript interface
export interface Nominatim {
boundingbox: Array<string>;
category: string;

View 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();
});
});

View 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);
}
}