public void pegarAsync(float latitude, float longitude, GeoEnderecoEventHandler callback) { var location = new CLLocation(latitude, longitude); var geoCoder = new CLGeocoder(); geoCoder.ReverseGeocodeLocation(location, (placemarkers, error) => { if (placemarkers.Length > 0) { var geoEndereco = placemarkers[0]; var endereco = new GeoEnderecoInfo { Logradouro = geoEndereco.Thoroughfare, Complemento = geoEndereco.SubThoroughfare, Bairro = geoEndereco.SubLocality, Cidade = geoEndereco.Locality, Uf = geoEndereco.AdministrativeArea, CEP = geoEndereco.PostalCode, }; if (callback != null) { ThreadUtils.RunOnUiThread(() => { callback(null, new GeoEnderecoEventArgs(endereco)); }); } } }); }
public void pegarAsync(float latitude, float longitude, GeoEnderecoEventHandler callback) { new Thread(new ThreadStart(() => { try { Context context = Android.App.Application.Context; var geo = new Geocoder(context); var addresses = geo.GetFromLocation(latitude, longitude, 1); var geoEndereco = addresses.Take(1).SingleOrDefault(); if (geoEndereco != null) { var endereco = new GeoEnderecoInfo { Logradouro = geoEndereco.Thoroughfare, Complemento = geoEndereco.SubThoroughfare, Bairro = geoEndereco.SubLocality, Cidade = geoEndereco.Locality, Uf = geoEndereco.AdminArea, CEP = geoEndereco.PostalCode, }; if (callback != null) { CurrentActivityUtils.Current.RunOnUiThread(() => { callback(null, new GeoEnderecoEventArgs(endereco)); }); } } } catch (Exception e) { // não faz nada } })).Start(); }
public static void pegarAsync(float latitude, float longitude, GeoEnderecoEventHandler callback) { if (_geocoder == null) { _geocoder = DependencyService.Get <IGeocoder>(); } _geocoder.pegarAsync(latitude, longitude, callback); }