适用于不受支持区域的Azure Maps API解决方法

时间:2018-10-30 13:51:56

标签: azure azure-maps

我正在使用Azure Maps API进行地理编码反转。有时,它起作用,有时却不起作用。在研究过程中,我找到了一个文档https://docs.microsoft.com/en-us/azure/azure-maps/about-azure-maps。它说以下国家/地区目前不支持该API-

  • 阿根廷
  • 中国
  • 印度
  • 摩洛哥
  • 巴基斯坦
  • 韩国

我正在寻找解决方法。有什么方法可以使用印度的API?

2 个答案:

答案 0 :(得分:1)

一种选择是使用VPN进入受支持的区域。请注意,如果您这样做,请勿公开共享地图,因为它会显示与这些国家/地区的观点不一致的内容,并可能使您的公司陷入困境。这些国家中的许多国家可能会在2019年初畅通无阻。

答案 1 :(得分:0)

这是我想出的解决方法。

在Azure中创建一个功能应用程序,并对Azure maps API进行Http调用。确保该应用托管在允许使用Azure maps 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的响应。

enter image description here