using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Domain.Common;
namespace gehGassi.Core.Interfaces
{
///
/// Schnittstellenbeschreibung für einen Service der zu einer Adresse Längen- und Breitengrad ermittelt, oder zu Längen- und Breitengrad eine Adresse
///
public interface IGeoLocationService
{
///
/// Längen und Breitengrad zu einer Adresse suchen.
/// Zuerst wird versucht die Position mit Strasse, PLZ, Ort und Land zu finden.
/// Wenn das nicht klappt, dann mit PLZ, Ort, Land.
/// Wenn das nicht klappt, dann PLZ Land.
///
/// Adresse
/// Gewünschte Sprache ISO2
/// Geo-Position
Task GetLocationAsync(Address address, string language);
///
/// Längen und Breitengrad zu einer Adresse suchen.
///
/// Adresse als Text-Zeile
/// Gewünschte Sprache ISO2
/// Geo-Position
Task GetLocationAsync(string address, string language);
///
/// Längen und Breitengrad zu einer Adresse suchen. Adresse wird mit Details mitgeliefert.
/// Zuerst wird versucht die Position mit Strasse, PLZ, Ort und Land zu finden.
/// Wenn das nicht klappt, dann mit PLZ, Ort, Land.
/// Wenn das nicht klappt, dann PLZ Land.
///
/// Adresse
/// Gewünschte Sprache ISO2
/// Geo-Position
Task GetLocationFillAsync(Address address, string language);
///
/// Längen und Breitengrad zu einer Adresse suchen. Adresse wird mit Details mitgeliefert.
///
/// Adresse als Text-Zeile
/// Gewünschte Sprache ISO2
/// Geo-Position
Task GetLocationFillAsync(string address, string language);
///
/// Reverse-Geocoding
///
/// Breitengrad
/// Längengrad
/// Gewünschte Sprache ISO2
/// ReverseLocation
Task GetReverseAsync(double lat, double lng, string language);
}
///
/// Hilfsklasse - Ergebnis einer Geolokalisierung
///
public class GeoLocation
{
///
/// Breitengrad
///
public double Latitude { get; set; }
///
/// Längengrad
///
public double Longitude { get; set; }
///
/// Anfrage erfolgreich?
///
public bool Success { get; set; }
///
/// Optionale Fehlermeldung wenn kein Erfolg
///
public string ErrorMessage { get; set; }
}
///
/// Hilfsklasse - Ergbenis einer Geolokalisierung um Adresse ergänzt
///
public class GeoLocationFill : GeoLocation
{
///
/// Adresse die gefunden wurde
///
public Address Address { get; set; }
///
/// Erstellt eine Instanz
///
public GeoLocationFill()
{
Address = new Address();
}
}
///
/// Hilfsklasse - Ergebnis einer Geolokalisierung nach Lat Long
///
public class ReverseLocation
{
///
/// Adresse die gefunden wurde
///
public Address Address { get; set; }
///
/// Anfrage erfolgreich?
///
public bool Success { get; set; }
///
/// Optionale Fehlermeldung wenn kein Erfolg
///
public string ErrorMessage { get; set; }
///
/// Erstellt eine Instanz
///
public ReverseLocation()
{
Address = new Address();
}
}
///
/// Optionen für den Geolokalisierungs-Service
///
public class GeoLocationOptions
{
///
/// Basis-URI
///
public string BaseUri { get; set; }
///
/// Name des Useragents der im Header gesetzt werden soll
///
public string UserAgentName { get; set; }
///
/// Version des UserAgents der im Header gesetzt werden soll
///
public string UserAgentVersion { get; set; }
}
}