0
我想創建一個幫助器類來處理我的應用程序中的Geocoding和ReverseGeoCoding。Xamarin Forms GetAddressesForPositionAsync
我的挑戰是下面這行代碼實際上並沒有等待調用的結果。
var possibleAddresses = await iobj_Geocoder.GetAddressesForPositionAsync(pobj_Position);
在檢索地址結果之前,控制返回到調用事件。任何幫助如何使這項工作將不勝感激。
幫助類代碼:
using System.Linq;
using Xamarin.Forms.Maps;
namespace MapProblems
{
public class MapHelper
{
private Geocoder iobj_Geocoder;
public string Address { get; set; }
public MapHelper()
{
iobj_Geocoder = new Geocoder();
}
public async void GeoCodeAddress(Position pobj_Position)
{
var possibleAddresses = await iobj_Geocoder.GetAddressesForPositionAsync(pobj_Position);
Address = possibleAddresses.ToList()[0];
}
}
}
調用助手類C#文件主頁:
using System;
using System.Diagnostics;
using Xamarin.Forms;
using Xamarin.Forms.Maps;
namespace MapProblems
{
public partial class MainPage : ContentPage
{
MapHelper iobj_MapHelper;
public MainPage()
{
InitializeComponent();
iobj_MapHelper = new MapHelper();
this.Appearing += MainPage_Appearing;
}
private async void MainPage_Appearing(object sender, EventArgs e)
{
Device.BeginInvokeOnMainThread(() =>
{
iobj_MapHelper.GeoCodeAddress(new Position(38.9047, -077.0310));
}
);
Debug.WriteLine("Address: " + iobj_MapHelper.Address);
}
}
}
所以這個例子中的最終結果是Address是任何空字符串時的Debug.WriteLine代碼執行。
任何援助將不勝感激。
我已經嘗試了你的建議,但它不起作用,但我會再試一次並讓你知道。 –
OK,確實有效,它引發了我提交給MS的缺陷。對於大家的知識,如果您在Windows Phone 8.1模擬器上運行上述代碼,則會返回1個地址。如果您在Windows 10移動模擬器上運行它,則會返回零地址。我創建的應用程序是Windows Phone 8.1應用程序的FYI。 –