 |  | |  | |
Google Maps API. Геокодирование | Полный текст материала
Другие публикации автора: Максим Мазитов
Цитата или краткий комментарий: «... Геокодирование - процесс превращения строкового почтового адреса в координаты. А также, обратный процесс. ...» |
Важно:- Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
- Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
- При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
- Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.
Добавить свое мнение.
| | Содержит полезные и(или) интересные сведения | [1] | 6 | 100% | | | | Ничего особенно нового и интересного | [2] | 0 | 0% | | | | Написано неверно (обязательно укажите почему) | [3] | 0 | 0% | | Всего проголосовали: 6 | | | Все понятно, материал читается легко | [1] | 4 | 80% | | | | Есть неясности в изложении | [2] | 1 | 20% | | | | Непонятно написано, трудно читается | [3] | 0 | 0% | | Всего проголосовали: 5 |
[Сетевые службы и протоколы] [HTTP/HTTPS] [Взаимодействие с ГИС]
Отслеживать это обсуждение 
Всего сообщений: 1808-10-2010 05:18>>Уважаемые, проект не работает в среде Delphi 2009. Подразумеваю, что из-за проблем с кодировками, сталкивался ли >>кто-нибудь с подобной проблемой? Как это исправить?
Я переводил строку запроса к гуглю так:
function WideStr2UTF8URLEncode(const WStr:WideString):string;
var
UStr:UTF8String;
i:integer;
begin
UStr:=UTF8Encode(WStr);
result:='';
if length(UStr)>0 then
for i:=1 to length(UStr) do
result:=result+'%'+IntToHex(ord(UStr[i]),2);
end; |
|
28-06-2010 02:24сообщение от автора материала 2 ~AQUARIUS~> Ну извините, не копал в эту сторону. Хотя формат и правда удобочитаемее чем XML |
|
27-06-2010 13:32Статья суперовая, легкая к прочтению и, главное, - пониманию. В целом просто супер. Одно только замечание - по поводу предложения Json внутренний формат Google Map JSON - это "родной" формат представления обьектов JavaScript |
|
28-03-2010 17:02
23-12-2009 14:51Уважаемые, проект не работает в среде Delphi 2009. Подразумеваю, что из-за проблем с кодировками, сталкивался ли кто-нибудь с подобной проблемой? Как это исправить? |
|
02-07-2009 06:13сообщение от автора материала 2mikki43306>
Это слегка из другой оперы. Можно заполнить результирующий поток данными из КЛМ файла, только это ничего не даст. Во-первых, поток в коде чистится, во-вторых, эти данные никуда не передаются. Скрипт на Гугле ничего не знает об этих данных, так что это затея пустая.
Для рисования маршрута на карте КЛМ-файл должен обрабатываться через Жабоаплет GMap2, встроенный в эксплорер. Инфу можно найти у Гугла примерно здесь http://code.google.com/intl/ru/apis/maps/
Это отдельная большая тема по встраиванию интерактивных карт через эксплорер (WebBrowser) в Delphi. Писать такую статью я не готов, очень много инфы и очень много неясностей.
Так что советую просто сделать перечисление маркеров в URL. Читайте доку. |
|
30-06-2009 14:25Спасибо за статью.
Я попробовал переделать вашу программу под задачу чтения из файла .kml с последующим выводом точек на карту. (можно сказать просто урезал)
Но вместо вывода карты с точками получается чистая карта, подскажите пожалуйста где я ошибся.
function GetInetFile(const FileURL:String; Stream:TMemoryStream): boolean;
const
BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
sAppName: string;
Utf8FileUrl:UTF8String;
Headers:String;
begin
Utf8FileUrl:=AnsiToUtf8(FileURL);
sAppName:= ExtractFileName(Application.ExeName);
hSession:= InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
try
Headers:='Accept-Language: ru';
hURL := InternetOpenURL(hSession,PChar(Utf8FileUrl),PChar(Headers),Length(Headers),0,0);
try
Stream.Clear;
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
Stream.Write(Buffer,BufferLen);
until BufferLen = 0;
Result:=True;
finally
InternetCloseHandle(hURL)
end;
finally
InternetCloseHandle(hSession)
end;
end;
function GetMap:TOleGraphic;overload;
var
FileOnNet: String;
Stream:TMemoryStream;
Markers:String;
i:Integer;
begin
Stream:=TMemoryStream.Create;
Stream.LoadFromFile('D:\kml.kml');
try
FileOnNet:='http://maps.google.com/staticmap?size=640x640'
+'&markers=%s'
+'&maptype=mobile&key=MAPS_API_KEY';
FileOnNet:=Format(FileOnNet,[Markers]);
if GetInetFile(FileOnNet,Stream) = True then begin
Stream.Position:=0;
Result:=TOleGraphic.Create;
Result.LoadFromStream(Stream);
end else
Result:=nil;
finally
Stream.Free;
end;
end;
procedure TForm1.bbOkClick(Sender: TObject);
var
SearchString:String;
OleGraphic: TOleGraphic;
begin
OleGraphic:=GetMap;
ImageGeocoding.Picture.Assign(OleGraphic);
OleGraphic.Free;
end;
|
|
18-05-2009 20:18инфицирован Trojan.DownLoader.origin
Ерунда, KIS 2009 молчит :)
Хотя один раз он тоже принял у меня разрабатываемую программку на Delphi с двумя кнопками и тремя строчками кода за опасного трояна. Самое интересное, при изменении Left или Top у одной из кнопок exe-шник уже не детектился )))
Проблема решилась за считанные часы, отправкой "вируса" в архиве письмом с темой "Ложное срабатывание" в ЛК. Через 4 часа вышло обновление баз с фиксом
Так что приготовиться к таким неожиданностям стоит каждому
Насчёт статьи: very good. Не планирую работать с гуглокартами, но всё равно подчерпнул полезную инфорпмацию :) Спасибо |
|
16-05-2009 02:42сообщение от автора материала В функции GetMap после получения потока пишем
Stream.SaveToFile('FileName.gif') |
|
16-05-2009 02:39сообщение от автора материала Внимательно читаем первую статью. Изображение приходит в Gif формате. |
|
15-05-2009 12:08А как Вы сохраняли карту города в *.JPG (первая вкладка)? Пытаюсь реализовать по нажатии на кнопку, но получаю либо ошибку:
Can only modify an image if it contains a bitmap
либо пустой (0 байт) файл!
В каком формате получается изображение на TImage? |
|
15-05-2009 03:10сообщение от автора материала 2Alx: Это отдельная большая тема. Статические карты не дадут этого. Тут нужно использовать встраивание обычных карт Google в IE. Причем это захватывает знания по Java, JavaScript, DOM IE. У меня есть некий рабочий вариант такой картографии, но не везде я могу объяснить что и почему работает. Хотя работает :) Так что статью писать пока рано... |
|
14-05-2009 10:16И навигатор! Если не мышью перемещаться по карте, тогда как, хоть с помощью 4-х кнопок это реализовать? |
|
14-05-2009 09:44Статья очень интересная! Спасибо!
Остался вопрос - как отработать клик мышью на карте, чтобы получить эти заветные: xx.xxxxxx !? Да, сначала можно найти нужный город через поиск, ... а как быть по точнее без точного адреса? Как бы с помощью мыши получить координаты точки? |
|
13-05-2009 02:40Ложное срабатывание антивируса — это понятно. Я тоже иногда умудрялся "написать" вирус или что-нибудь "внедрить" в html. Претензий никаких, но предостережение выскажу: использование хоть и открытых библиотек, на которые ругается антивирус, опасно. В Вашем варианте, я думаю, библиотека скачивает из-за защищенного периметра потенциально опасные данные мимо стандартной процедуры. И тут не столько страшно, что что-то ругается на Вашу программу, тут важнее, что кто-то может внедрить в получаемую информацию вредоносный код и с помощью Вашей программы атака будет успешной. В общем это отдельная тема большого разговора…
А Ваши изыскания по использованию html API в частности сервиса Google Map очень интересны. Методика построения запросов даёт правильные навыки, результаты занимательны и дают импульс к дальнейшему изучению…
|
|
13-05-2009 01:08сообщение от автора материала Нда, DrWeb CureIt именно это и говорит.
Каспер:
13.05.2009 9:58:32 Файл: C:\GoogleStaticMap.Src\GoogleStaticMap.dpr ok проверен
13.05.2009 9:58:32 Файл: C:\GoogleStaticMap.Src\GoogleStaticMap.exe ok iChecker
13.05.2009 9:58:32 Файл: C:\GoogleStaticMap.Src\GoogleStaticMap.res ok проверен
13.05.2009 9:58:32 Файл: C:\GoogleStaticMap.Src\Main.dfm ok проверен
13.05.2009 9:58:32 Файл: C:\GoogleStaticMap.Src\Main.pas ok проверен
но говорит что опасных объектов не обнаружено
Аваст тоже криминала не видит.
Вы не предполагаете, что Trojan.DownLoader.origin написан на Delphi c использованием тех же функций скачивания данных из инета? Когда я писал софт с использованием клавиатурных ловушек, мне антивирь говорил подобное.
Код открыт и не использует никаких закрытых библиотек. Пожалуй, надо написать Елене Филипповой об удалении ехе файла из архива для успокоения DrWeb. Правда при компиляции он (DrWeb) будет видимо также возмущаться, так что, извиняйте, Константин, не судьба... |
|
13-05-2009 01:00автору спасибо за интересные статьи ;)
2 Константин Цветков:
обычное false срабатывание антивируса. на вирустотал ругнулся DrWeb, помнится он мне на курсовые с матричными преобразованиями также реагировал, такое бывает, и должен сказать весьма часто. Опять же можете запустить из среды ;) |
|
12-05-2009 23:00Мнения никакого не будет:
C:\Temp\FTMP000O.2N0\GoogleStaticMap.exe - инфицирован Trojan.DownLoader.origin
Это программа так написана? Или это результат изысканий по API Google? |
|
|
|