Почему API матрицы расстояний Google возвращает только 10 результатов, когда пройдено 52? - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь получить расстояние для различных адресов из исходного адреса и могу вызвать API матрицы расстояний Google, но вместо каждого отправленного адреса возвращается только 10 результатов. Я использую библиотеку Restsharp в C #. Насколько я понимаю из документации, она должна работать до 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++;
            }
        }
    }

1 Ответ

1 голос
/ 23 мая 2019

Ответ заключается в том, что строка запроса, созданная этим методом, настолько длинна, что в запросе только столько адресов.Так что Google API работал нормально, но мой запрос был обрезан по максимальной длине запроса.Я обнаружил это, используя fiddler и изучив значение запроса, и вот, в нем было всего 10 адресов.

...