0

我有兩段代碼,一個從位置&獲得地址,從地址獲取位置。Xamarin表格地理編碼Android

GetAddressesForPosition

var geoCoder = new Geocoder(); 

      Task.Run(async() => 
      { 
       var possibleAddresses = await geoCoder.GetAddressesForPositionAsync(position); 

       Device.BeginInvokeOnMainThread(() => 
       { 
        var firstAdress = possibleAddresses.FirstOrDefault(); 
        GeolocationAdressEntry.Text = firstAdress; 
        //GeolocationAdressEntry.Text = [email protected]"{firstAdresse.} {firstAdresse.PostalCode} {firstAdresse.Locality}"; 
       }); 

      }); 

對於這個代碼,我不會有任何異常,從不代碼後

var possibleAddresses = await geoCoder.GetAddressesForPositionAsync(position); 

GetPositionsForAddress

var elem = (Entry)sender; 
      var geoCoder = new Geocoder(); 

      IEnumerable<Xamarin.Forms.Maps.Position> loc; 

      try 
      { 
       loc = await geoCoder.GetPositionsForAddressAsync(elem.Text); 

       var firstLoc = loc.FirstOrDefault(); 
       var adress = elem.Text; 

       CreateNewPin(firstLoc, adress); 
      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine(ex.Message); 
      } 

對於這一個它引發了一個錯誤:「grpc失敗」。如果需要,我可以發佈完整的錯誤。

這很無聊,因爲它在IOS中完美運行。

我嘗試了不同版本的仿真器(Genymotion & adb),並且在真正的設備中。同樣的問題。

+0

我只在模擬器上得到這個,這是Android模擬器的一個已知限制。至於設備,我的代碼適用於Android 4.4 - > Android 7.1的所有測試設備。您確定您已經爲您的Android項目正確設置了Google API密鑰嗎? – Ewald

+1

嗨,我忘了上傳這個帖子。你是完全正確的,這是一個模擬器問題的代碼工作perfeclty在設備(好像4.4需要重新啓動工作) – OrcusZ

回答

0

該問題來自仿真器。代碼在真正的設備中工作。