Google Maps Geocode API возвращает NO_RESULTS программно, но возвращает результаты в браузере с тем же URL - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь отобразить все офисы своей компании на Картах Google, и у меня возникает странная проблема при вызове API.Код вернет NO_RESULTS примерно на половине служебных адресов, но когда я скопирую точный используемый вызов, он вернет результаты в моем браузере.Добавление component = страна: США решило большинство из них, но есть еще несколько с этой конкретной проблемой.

Это пример одного:

https://maps.googleapis.com/maps/api/geocode/json?components=country:US&address=1110%20PELICAN%20BAY%20DRIVE%20%20DAYTONA%20BEACH%20FL%20321191381&key=KEY

1110 ПЕЛИКАН Bay Drive Дейтона Бич FL 321191381

1110% 20PELICAN% 20BAY% 20DRIVE% 20% 20DAYTONA% 20BEACH% 20FL% 20321191381

ZERO_RESULTS

Он работает в любом браузере, в котором я его пробую, но не работает при вызове моим клиентом REST.Код ниже:

public Geolocation Locate(string address)
    {
        var client = new RestClient();
        client.BaseUrl = new Uri("https://maps.googleapis.com/");

        var request = new RestRequest("maps/api/geocode/json?components=country:US&address={address}&key=KEY");
        request.AddParameter("address", Uri.EscapeDataString(address), ParameterType.UrlSegment);

        var response = client.Execute<Geolocation>(request);

        return response.Data;
    }

Выше мой сервис для вызова API, и вот как это реализовано.

officeObj.Address = office.ADDR1.Trim() + " " +
                    office.ADDR2.Trim() + " " +
                    office.CITY.Trim() + " " +
                    office.STATE.Trim() + " " +
                    office.ZIP.Trim();

Geolocation geolocation = _geolocationService.Locate(officeObj.Address);
var location = geolocation?.results.FirstOrDefault()?.geometry?.location;

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Вам необходимо правильно использовать RestSharp.Этот код отлично работает.

public static IRestResponse Locate(string address)
{
    var client = new RestClient();
    client.BaseUrl = new Uri("https://maps.googleapis.com/");
    client.AddDefaultParameter("key", ApiKey, ParameterType.QueryString);

    var request = new RestRequest("maps/api/geocode/json?components=country:US");
    request.AddQueryParameter("address", address);

    return client.Get(request);
}
0 голосов
/ 19 октября 2018

Оказывается, проблема полностью в RestSharp.Замена его стандартным болотом HttpClient решила всю проблему, так что, похоже, это ошибка в этой библиотеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...