public void Save(GeoLocalizacao geoLocalizacao) { if (geoLocalizacao != null) { _data.Save(geoLocalizacao); } }
public static Vector2 ToGlobalXY(this GeoLocalizacao geoLocalizacao, PontoReferencia pontoInicial, PontoReferencia pontoFinal) { //Calculates x based on cos of average of the latitudes var x = EARTH_RADIUS * geoLocalizacao.Longitude * Math.Cos((pontoInicial.Localizacao.Latitude + pontoFinal.Localizacao.Latitude) / 2); //Calculates y based on latitude var y = EARTH_RADIUS * geoLocalizacao.Latitude.ToSingle(); return(new Vector2(x.ToSingle(), y)); }
public async Task <IList <Empresa> > ListAsync() { //Obter a última GeoLocalização var geoLocalizacaoBo = new GeoLocalizacaoLogic(); var geoLocalizacao = geoLocalizacaoBo.Get(); try { //Recuperar a geolocalização var locator = CrossGeolocator.Current; var position = await locator.GetPositionAsync(10000); //Salvar a posição atual if (geoLocalizacao == null) { geoLocalizacao = new GeoLocalizacao(); } geoLocalizacao.Latitude = position.Latitude; geoLocalizacao.Longitude = position.Longitude; geoLocalizacaoBo.Save(geoLocalizacao); } catch (Exception) { // Caso não consiga a posição do GPS e nem uma última geolocalização, passa-se o marco zero de Ribeirão Preto como padrão if (geoLocalizacao == null) { geoLocalizacao = new GeoLocalizacao { Latitude = -21.174587700091447, Longitude = -47.80945301055908 } } ; } //Trocar vírgulas por pontos var latStr = geoLocalizacao.Latitude.ToString().Replace(",", "."); var lngStr = geoLocalizacao.Longitude.ToString().Replace(",", "."); //Fazer a requisição return(await _service.ListAsync($"empresas/{latStr}/{lngStr}")); } }
public static Vector2 ToScreenXY(this GeoLocalizacao localizacao, PontoReferencia pontoInicial, PontoReferencia pontoFinal, Vector2 pontoInicialGlobal, Vector2 pontoFinalGlobal) { //Calculate global X and Y for projection point var pos = ToGlobalXY(localizacao, pontoInicial, pontoFinal); //Calculate the percentage of Global X position in relation to total global width var perX = ((pos.X - pontoInicialGlobal.X) / (pontoFinalGlobal.X - pontoInicialGlobal.X)); //Calculate the percentage of Global Y position in relation to total global height var perY = ((pos.Y - pontoInicialGlobal.Y) / (pontoFinalGlobal.Y - pontoInicialGlobal.Y)); var x = pontoInicial.Referencia.X + (pontoFinal.Referencia.X - pontoInicial.Referencia.X) * perX; var y = pontoInicial.Referencia.Y + (pontoFinal.Referencia.Y - pontoInicial.Referencia.Y) * perY; return(new Vector2(x, y)); }