C# 为什么google distance matrix API在通过52次后只返回10次结果?

C# 为什么google distance matrix API在通过52次后只返回10次结果?,c#,google-api,restsharp,google-distancematrix-api,C#,Google Api,Restsharp,Google Distancematrix Api,我试图从一个源地址获得不同地址的距离,并且能够调用google距离矩阵API,但是只返回10个结果,而不是每个发送地址的结果。我正在使用c#中的restsharp库。 我从文档中了解到,它一次最多可用于100个地址 private void CalculateDistance(List<StoreViewModel> tempList, string lattitude, string longitude) { var url = "https://maps.

我试图从一个源地址获得不同地址的距离,并且能够调用google距离矩阵API,但是只返回10个结果,而不是每个发送地址的结果。我正在使用c#中的restsharp库。 我从文档中了解到,它一次最多可用于100个地址

private void CalculateDistance(List<StoreViewModel> tempList, string lattitude, string longitude)
    {
        var url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&key=removedForStackOverflowPostInsertYourKeyHere&origins=";
        string destinations = string.Empty;
        foreach(StoreViewModel vm in tempList)
        {
            destinations += "|";
            destinations += vm.AddressLine1;
            destinations += string.IsNullOrWhiteSpace(vm.AddressLine2) ? "" : "+" + vm.AddressLine2;
            destinations += string.IsNullOrWhiteSpace(vm.AddressLine3) ? "" : "+" + vm.AddressLine3;
            destinations += "+" + vm.City;
            destinations += "+" + vm.State;
            destinations += "+" + vm.ZIP;
            destinations += "|";
        }
        url += lattitude + "," + longitude;
        url += "&destinations=";
        url += destinations;
        var client = new RestClient(url);
        var request = new RestRequest(Method.GET);
        request.RequestFormat = DataFormat.Json;
        request.AddHeader("Content-Type", "application/json; charset=utf-8");
        var response = client.Execute(request);
        var jsonObject = System.Web.Helpers.Json.Decode(response.Content);
        int i = 0;
        foreach(var row in jsonObject.rows)
        {
            foreach(var element in row.elements)
            {
                if(element!=null && element.distance!=null)
                {
                    tempList[i].DistanceFromUser = element.distance.value;
                    tempList[i].DistanceFromUserText = element.distance.text;
                }
                else
                {
                    tempList[i].DistanceFromUser = 99999999;
                    tempList[i].DistanceFromUserText = "Distance not available.";
                }
                i++;
            }
        }
    }
private void calculateInstance(列表模板、字符串晶格度、字符串经度)
{
变量url=”https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&key=removedForStackOverflowPostInsertYourKeyHere&origins=";
string destinations=string.Empty;
foreach(tempList中的StoreViewModel vm)
{
目的地+=“|”;
目的地+=vm.AddressLine1;
destinations+=string.IsNullOrWhiteSpace(vm.AddressLine2)?“”:“+”+vm.AddressLine2;
destinations+=string.IsNullOrWhiteSpace(vm.AddressLine3)?“”:“+”+vm.AddressLine3;
目的地+=“+”+vm.City;
目的地+=“+”+vm.State;
目的地+=“+”+vm.ZIP;
目的地+=“|”;
}
url+=latitude+“,”+经度;
url+=“&destinations=”;
url+=目的地;
var client=新的RestClient(url);
var请求=新的重新请求(Method.GET);
request.RequestFormat=DataFormat.Json;
AddHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
var response=client.Execute(请求);
var jsonObject=System.Web.Helpers.Json.Decode(response.Content);
int i=0;
foreach(jsonObject.rows中的变量行)
{
foreach(row.elements中的var元素)
{
if(element!=null&&element.distance!=null)
{
模板列表[i].DistanceFromUser=element.distance.value;
模板列表[i].DistanceFromUserText=element.distance.text;
}
其他的
{
tempList[i].DistanceFromUser=9999999;
tempList[i].DistanceFromUserText=“距离不可用。”;
}
i++;
}
}
}

答案是,这种类型的方法创建的查询字符串太长,请求中的地址太多。所以GoogleAPI工作正常,但是我的请求被最大查询长度截断了。我是通过使用fiddler并检查请求值发现这一点的。结果发现,请求值中只有10个地址。

我相信我在某个地方读到过,前10个地址是免费的,如果你想要更多地址,你必须付费。@Terryson谢谢你!不过我认为,我已经启用了API,所以它应该只给我开账单,而不是跳过一些响应数据。我确实在谷歌网站上看到了一些关于付费计费的信息,因此可能需要额外的配置来实现我想要的功能,但如果是这样的话,这并不明显。我会继续挖掘。我已经打开了一个谷歌的支持案例,所以如果这是他们解决的问题,那么我也会在这里更新。