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