Xamarin Essentials Геолокация и геокодирование - PullRequest
2 голосов
/ 12 апреля 2019

Я пытаюсь получить геолокацию в xamarin, текущее местоположение.Я перехожу по этой ссылке https://docs.microsoft.com/en-us/xamarin/essentials/geocoding?context=xamarin%2Fandroid&tabs=android.Я следил за всем, что показано там, но я получаю ошибку в var placemarks = await Geocoding.GetPlacemarksAsync(MyLocation.Latitude, yLocation.Longitude); Я получаю широту и долготу.когда я пытаюсь изменить его на адрес, он показывает ошибку.Я дал разрешение на местоположение и интернет, но все равно получаю ошибку.

"Превышено время ожидания ответа от сервера на java.interop.

Я дал разрешение на Интернет и местоположение

 private async void btnGetAddress_Clicked(object sender, EventArgs e)
        {
            try
            {
                double lat = MyLocation.Latitude;
                double lon = MyLocation.Longitude;

                LabelAddress.Text = "";

                var placemarks = await Geocoding.GetPlacemarksAsync(MyLocation.Latitude, MyLocation.Longitude);

                var placemark = placemarks?.FirstOrDefault();
                if (placemark != null)
                {
                    var geocoding =
                        $"AdminArea:        {placemark.AdminArea}\n" +
                        $"CountryCode:        {placemark.CountryCode}\n" +
                        $"CountryName:        {placemark.CountryName}\n" +
                        $"FeatureName:        {placemark.FeatureName}\n" +
                        $"Locality:        {placemark.Locality}\n" +
                        $"PostalCode:        {placemark.PostalCode}\n" +
                        $"SubAdminArea:        {placemark.SubAdminArea}\n" +
                        $"SubLocality:        {placemark.SubLocality}\n" +
                        $"SubThoroughfare:        {placemark.SubThoroughfare}\n" +
                        $"Thoroughfare:        {placemark.Thoroughfare}\n";

                    Console.WriteLine(geocoding);
                    LabelAddress.Text = geocoding;
                }
            }
            catch(Exception ex)
            {
                LabelAddress.Text = ex.ToString();
            }
        }

Я хочуполучить текущее местоположение пользователя

полная ошибка:

{Java.IO.IOException: Timed out waiting for response from server
  at Java.Interop.JniEnvironment+InstanceMethods.CallObjectMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <034d4a9852dd45bea9353cc7776c99f0>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeAbstractObjectMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00014] in <034d4a9852dd45bea9353cc7776c99f0>:0 
  at Android.Locations.Geocoder.GetFromLocation (System.Double latitude, System.Double longitude, System.Int32 maxResults) [0x0004b] in <a10f61e70eeb434e952fef884856c199>:0 
  at Android.Locations.Geocoder+<>c__DisplayClass15_0.<GetFromLocationAsync>b__0 () [0x00000] in <a10f61e70eeb434e952fef884856c199>:0 
  at System.Threading.Tasks.Task`1[TResult].InnerInvoke () [0x0000f] in <43dbbdc147f2482093d8409abb04c233>:0 
  at System.Threading.Tasks.Task.Execute () [0x00010] in <43dbbdc147f2482093d8409abb04c233>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <43dbbdc147f2482093d8409abb04c233>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <43dbbdc147f2482093d8409abb04c233>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <43dbbdc147f2482093d8409abb04c233>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <43dbbdc147f2482093d8409abb04c233>:0 
  at Xamarin.Essentials.Geocoding+<PlatformGetPlacemarksAsync>d__3.MoveNext () [0x0003d] in D:\a\1\s\Xamarin.Essentials\Geocoding\Geocoding.android.cs:15 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <43dbbdc147f2482093d8409abb04c233>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <43dbbdc147f2482093d8409abb04c233>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <43dbbdc147f2482093d8409abb04c233>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <43dbbdc147f2482093d8409abb04c233>:0 
  at GetLocation.MainPage+<btnGetAddress_Clicked>d__3.MoveNext () [0x00088] in C:\Users\Zahya\source\repos\GetLocation\GetLocation\GetLocation\MainPage.xaml.cs:60 
  --- End of managed Java.IO.IOException stack trace ---
java.io.IOException: Timed out waiting for response from server
    at android.location.Geocoder.getFromLocation(Geocoder.java:136)
}
...