我正在使用 Azure Maps API 进行地理编码反转。有时,它有效,有时则无效。在研究时,我发现了一个文档- https://docs.microsoft.com/en-us/azure/azure-maps/about-azure-maps。它表示以下国家/地区目前不支持该 API -
- 阿根廷
- 中国
- 印度
- 摩洛哥
- 巴基斯坦
- 韩国
我正在寻找一种解决方法。有什么办法可以使用印度的 API?
我正在使用 Azure Maps API 进行地理编码反转。有时,它有效,有时则无效。在研究时,我发现了一个文档- https://docs.microsoft.com/en-us/azure/azure-maps/about-azure-maps。它表示以下国家/地区目前不支持该 API -
我正在寻找一种解决方法。有什么办法可以使用印度的 API?
一种选择是在受支持的区域中使用 VPN。请注意,如果您这样做,请不要公开分享地图,因为它会显示与这些国家/地区的观点不一致的内容,并且可能会给您的公司带来一些麻烦。其中许多国家可能会在 2019 年初解封。
这是我想出的解决方法。
在 Azure 中创建一个函数应用并对 Azure 地图 API 进行 Http 调用。确保应用托管在允许使用 Azure 地图 API 的区域(例如美国中部)。
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Net.Http;
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
string lattlong = req.Query["lattlong"];
HttpClient httpClient = new HttpClient();
string location = httpClient.GetStringAsync("https://atlas.microsoft.com/search/address/reverse/json?api-version=1.0&subscription-key=<secret_key>&query=" + lattlong).Result;
dynamic data = Newtonsoft.Json.Linq.JObject.Parse(location);
return lattlong != null
? (ActionResult)new OkObjectResult(data.addresses[0].address.municipality + ", " + data.addresses[0].address.country)
: new BadRequestObjectResult("Failed to get location.");
}
函数应用应将经纬度作为参数并进行 Http 调用。
https://<function_app>.azurewebsites.net/api/GetLocation?code=1/<function_secret_key>&lattlong=13.097045900000001,77.59058569999999
来自 Azure Maps API 的响应由函数应用成功返回。