Доброго времени суток!
Перед тем как писать этот пост, я просмотрел много примеров, прочитал как люди реализуют работу с API, однако ввиду того, что API периодически меняется то и все примеры, которые смотрел не работают.
Но как говорится надо все-таки, и тогда я полез в дебри и начал по немногу разбирать с технологиями API, в частности меня интересует функция геокодирования.
Началось все с GOOGLE MAPS.
Там в принципе сложного ничего нет, вроде бы разобрался, зарегистрировал себе API-KEY, все вроде бы работает, но есть одна проблема.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.LoadFromFile(https://maps.googleapis.com/maps/api/geocode/xml?address=Moscow&key=MY_API_KEY);
XMLDocument1.Active := true;
Edit1.Text := XMLDocument1.DocumentElement.ChildNodes['result'].ChildNodes['geometry'].ChildNodes['location'].ChildNodes['lat'].Text;
Edit2.Text := XMLDocument1.DocumentElement.ChildNodes['result'].ChildNodes['geometry'].ChildNodes['location'].ChildNodes['lng'].Text;
XMLDocument1.Active := false;
end;
Если использовать запрос в таком виде, все работает хорошо, данные отправляются и принимаются так как нужно. Но если в запросе изменить название места - т.е. "Moscow" на "Москва", то сразу вылетает ошибка.

Почитал документацию на google, посмотрел параметры все которые там присутствуют, среди них я только нашел, язык вывода данных, т.е. то, что мы получаем в ответ. Хотя google по IP сам определяет место, откуда посылается запрос и выводит данные на языке, который используется в том месте, откуда посылается запрос.
Вот сам ответ, который присылает google -
google.txt
Вопрос в том - как реализовать возможность запроса на русском языке?
Далее немного подумав, что все-таки google это зарубежный сервис, а яндекс наш, то я добрался до последнего.
На первый взгляд он показался намного проще предыдущего, даже если учитывать одно то, что использование API-ключа здесь совсем не обязательно. Но как всегда первый взгляд бывает обманчив.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.LoadFromFile('https://geocode-maps.yandex.ru/1.x/?geocode=Волгоград');
XMLDocument1.Active := true;
Edit1.Text := XMLDocument1.DocumentElement.ChildNodes.Nodes['GeoObjectCollection'].ChildNodes.Nodes['GeoObject'].ChildNodes.Nodes['Point'].ChildNodes.Nodes['pos'].text;
Edit1.Text := XMLDocument1.DocumentElement.ChildNodes.Nodes['GeoObjectCollection'].ChildNodes.Nodes['GeoObject'].ChildNodes.Nodes['Point'].ChildNodes.Nodes['pos'].text;
XMLDocument1.Active := false;
end;
Вот собственно код самого ответа в XML, который присылает яндекс.
яндекс.txt
Вроде бы и запрос уходит, а на выходе ничего нет. В чем моя ошибка в работе с яндекс?
И сразу попутный вопрос - как реализовать чтобы данные, полученные от яндекс записывались в разные компоненты, т.е. из <pos>37.592797 55.771494</pos> в EDIT1 записывалась широта "37.592797", а в EDIT2 долгота "55.771494"?
P.S. Alegun, про "ледяной лёд" я помню, понимаю, что код очень кривой, но увы я пока только учусь.
Заранее спасибо!