Esempio n. 1
0
 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));
        }
Esempio n. 3
0
        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));
        }