我正在使用 Maps 控件开发一个 UWP 应用程序,该应用程序允许用户通过使用各种方法(例如单击 UWP Map 控件)在地图上添加航点来规划路线。我希望允许用户添加航点或位置的方法之一是按实际地址搜索。我使用下面的 BING Maps REST 服务代码,但如果我不提供当前使用该应用程序的语言和文化,它总是首先返回美国地址,这显然对不在美国的用户没有用(是的,微软,一些我们中的一些人实际上住在美国以外 - 震惊,恐怖!)。我发现如果我为澳大利亚提供诸如“en-AU”之类的语言文化字符串,那么它将首先搜索澳大利亚地址,这非常有效。
public async Task<List<WayPoint>> FindAddress(string address)
{
List<WayPoint> matchingWaypoints = new List<WayPoint>();
//Create a Geocode request to submit to the BING Maps REST service.
var request = new GeocodeRequest()
{
Query = address.Trim(),
Culture = "en-AU", //HOW CAN I GET THIS FROM THE DEVICE'S CURRENT LOCATION???
IncludeIso2 = true,
IncludeNeighborhood = true,
MaxResults = 10,
BingMapsKey = MapServiceToken
};
//Process the request by using the BING Maps REST services.
var response = await ServiceManager.GetResponseAsync(request);
if (response != null &&
response.ResourceSets != null &&
response.ResourceSets.Length > 0 &&
response.ResourceSets[0].Resources != null &&
response.ResourceSets[0].Resources.Length > 0)
{
int wpNumber = 0;
foreach (BingMapsRESTToolkit.Location loc in response.ResourceSets[0].Resources)
matchingWaypoints.Add(new WayPoint(wpNumber++, loc.Address.FormattedAddress, loc.Point.Coordinates[0], loc.Point.Coordinates[1]));
}
return matchingWaypoints;
}
所以我显然想要做的是根据设备的当前位置(即:国家)而不是设备的区域设置来派生这个字符串。因此,例如,如果有人正在使用我想指定 en-US 的美国应用程序,如果他们在新西兰,它将是 en-NZ,如果在法国,它将是“fr-FR”等。有谁知道如何我能做到这一点吗?我读过的所有关于本地化的东西都使用设备设置而不是当前的物理位置,所以我仍在尝试找出如何去做。
如果有人可以提供帮助,我将不胜感激:-)