mirror of
https://github.com/DerTyp7/street-map-typescript.git
synced 2025-10-29 12:52:11 +01:00
clean up search component
This commit is contained in:
@@ -1,11 +1,3 @@
|
||||
#inputFrom:focus + .autocomplete-items-from{
|
||||
visibility:visible;
|
||||
}
|
||||
|
||||
#inputTo:focus + .autocomplete-items-to{
|
||||
visibility:visible;
|
||||
}
|
||||
|
||||
.searchField{
|
||||
display:block;
|
||||
float:left;
|
||||
@@ -32,7 +24,7 @@
|
||||
}
|
||||
|
||||
.autocomplete-items {
|
||||
visibility: visible; /* without debugging it should be display:none */
|
||||
/*display: block; */
|
||||
position: absolute;
|
||||
border: 1px solid #d4d4d4;
|
||||
border-bottom: none;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
<div class="searchField">
|
||||
<div class="autocomplete">
|
||||
<input #inputFrom (change)="getValue(inputFrom.value, inputTo.value)" type="text" name="inputFrom" id="inputFrom" placeholder="From" value="{{ inputFromValue }}">
|
||||
<input #inputFrom (click)="getValue(inputFrom.value, true)" (change)="getValue(inputFrom.value, true)" type="text" name="inputFrom" id="inputFrom" placeholder="From" value="{{ inputFromValue }}">
|
||||
<div #inputautocompleteList class="autocomplete-items autocomplete-items-from">
|
||||
|
||||
<div *ngFor="let item of nominatimItemsFrom" >
|
||||
@@ -8,8 +9,9 @@
|
||||
<input type="hidden" value="{{ item.display_name }}">
|
||||
</div>
|
||||
|
||||
<!-- PHOTON -->
|
||||
<div *ngFor="let item of photonItemsFrom"
|
||||
(click)="selectPhoton(true, item)">
|
||||
(click)="selectPhoton(true, item);" >
|
||||
<!--IF TYPE == STREET-->
|
||||
<label *ngIf="item.properties.type == 'street'">
|
||||
{{ item.properties.name }} {{item.properties.housenumber}}<br>
|
||||
@@ -25,7 +27,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="autocomplete" id="autocompleteTo">
|
||||
<input #inputTo (change)="getValue(inputFrom.value, inputTo.value)" type="text" name="inputTo" id="inputTo" placeholder="To" value="{{ inputToValue }}">
|
||||
<input #inputTo (click)="getValue(inputTo.value, false)" (change)="getValue(inputTo.value, false)" type="text" name="inputTo" id="inputTo" placeholder="To" value="{{ inputToValue }}">
|
||||
<div #inputautocompleteList class="autocomplete-items autocomplete-items-to">
|
||||
|
||||
<div *ngFor="let item of nominatimItemsTo" >
|
||||
|
||||
@@ -5,11 +5,8 @@ import { Photon, PhotonFeatureCollection } from '../interfaces/photon';
|
||||
import { PhotonService } from '../services/photon.service';
|
||||
import { OsrmService } from '../services/osrm.service';
|
||||
import { Osrm } from '../interfaces/osrm';
|
||||
import { MapComponent } from '../map/map.component';
|
||||
import { EventEmitter } from '@angular/core';
|
||||
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'app-search',
|
||||
templateUrl: './search.component.html',
|
||||
@@ -42,41 +39,51 @@ export class SearchComponent{
|
||||
private nominatimService: NominatimService,
|
||||
private photonService: PhotonService,
|
||||
private osrmService: OsrmService,
|
||||
) { }
|
||||
) { }
|
||||
|
||||
getFormattedPhotonValue(p: Photon): string{
|
||||
let formatted: string = "";
|
||||
|
||||
if(p.properties.name){
|
||||
formatted += " " + p.properties.name;
|
||||
}
|
||||
if(p.properties.housenumber){
|
||||
formatted += " " + p.properties.housenumber;
|
||||
}
|
||||
if(p.properties.postcode){
|
||||
formatted += " " + p.properties.postcode;
|
||||
}
|
||||
if(p.properties.city){
|
||||
formatted += " " + p.properties.city;
|
||||
}
|
||||
if(p.properties.countrycode){
|
||||
formatted += " " + p.properties.countrycode;
|
||||
}
|
||||
|
||||
return formatted;
|
||||
}
|
||||
|
||||
|
||||
selectPhoton(isFrom: boolean, p: Photon): void{
|
||||
if(isFrom){
|
||||
this.selectedPhotonFrom = p;
|
||||
this.longFrom = <number> p.geometry?.coordinates[0];
|
||||
this.latFrom = <number> p.geometry?.coordinates[1];
|
||||
this.inputFromValue = <string> p.properties.name
|
||||
|
||||
if(p.properties.housenumber){
|
||||
this.inputFromValue += " " + p.properties.housenumber;
|
||||
}
|
||||
|
||||
if(p.properties.postcode){
|
||||
this.inputFromValue += " " + p.properties.postcode;
|
||||
}
|
||||
|
||||
if(p.properties.city){
|
||||
this.inputFromValue += " " + p.properties.city;
|
||||
}
|
||||
|
||||
if(p.properties.countrycode){
|
||||
this.inputFromValue += " " + p.properties.countrycode;
|
||||
}
|
||||
|
||||
this.inputFromValue = <string> p.properties.name;
|
||||
this.inputFromValue = this.getFormattedPhotonValue(p);
|
||||
this.photonItemsFrom = [];
|
||||
}else{
|
||||
this.selectedPhotonTo = p;
|
||||
this.longTo = <number>p.geometry?.coordinates[0];
|
||||
this.latTo = <number>p.geometry?.coordinates[1];
|
||||
this.inputToValue = <string> p.properties.name + " " + p.properties.countrycode;
|
||||
this.inputToValue = this.getFormattedPhotonValue(p);
|
||||
this.photonItemsTo = [];
|
||||
}
|
||||
|
||||
}
|
||||
// Gets called in "app.component.html" when an input changes its value
|
||||
getValue(valueFrom:string, valueTo:string): void{
|
||||
console.log("From " + valueFrom + " to " + valueTo);
|
||||
getValue(value:string, isFrom: boolean): void{
|
||||
|
||||
//this.updateAutoCompleteList([{display_name: 'Hallo'}, {display_name: 'Test2'}], [{display_name: 'Halload'}, {display_name: 'Test4'}]);
|
||||
|
||||
@@ -87,27 +94,22 @@ export class SearchComponent{
|
||||
this.nominatimService.sendQueryRequest(valueTo)
|
||||
.subscribe((response: Nominatim[]) => this.nominatimItemsTo = response);
|
||||
*/
|
||||
|
||||
this.photonItemsFrom = [];
|
||||
this.photonItemsTo = [];
|
||||
|
||||
this.photonService.sendQueryRequest(valueFrom)
|
||||
this.photonService.sendQueryRequest(value)
|
||||
.subscribe((response: PhotonFeatureCollection) => response.features?.forEach(feature => {
|
||||
this.photonItemsFrom.push(feature);
|
||||
this.longFrom = <number>this.photonItemsFrom[0].geometry?.coordinates![0];
|
||||
this.latFrom = <number>this.photonItemsFrom[0].geometry?.coordinates![1];
|
||||
console.log("longFrom: " + this.longFrom)
|
||||
console.log("latFrom: " + this.latFrom)
|
||||
if(isFrom){
|
||||
this.photonItemsFrom.push(feature);
|
||||
this.longFrom = <number>this.photonItemsFrom[0].geometry?.coordinates![0];
|
||||
this.latFrom = <number>this.photonItemsFrom[0].geometry?.coordinates![1];
|
||||
}else{
|
||||
this.photonItemsTo.push(feature);
|
||||
this.longTo = <number>this.photonItemsFrom[0].geometry?.coordinates![0];
|
||||
this.latTo = <number>this.photonItemsFrom[0].geometry?.coordinates![1];
|
||||
}
|
||||
}));
|
||||
|
||||
this.photonService.sendQueryRequest(valueTo)
|
||||
.subscribe((response: PhotonFeatureCollection) => response.features?.forEach(feature => {
|
||||
this.photonItemsTo.push(feature);
|
||||
this.longTo = <number>this.photonItemsTo[0].geometry?.coordinates![0];
|
||||
this.latTo = <number>this.photonItemsTo[0].geometry?.coordinates![1]
|
||||
console.log("LongTo: " + this.longTo)
|
||||
console.log("LatTo: " + this.latTo)
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
getRoute(): void{
|
||||
|
||||
Reference in New Issue
Block a user