pluginapi:plugintype:геокодирование
Нужен класс который, будет реализовывать интерфейс IGeoCoder, описанный в юните i_GeoCoder.pas
При вызове GetLocations он должен взять полученный текст запроса, обратится к сервису геокодирования, например Гугл, Яндекс или еще что-то, или к своей локальной базе (Пока настройки для плагинов не реализованы название файла с базой зашивать в коде) и вернуть пользователю объект с интерфейсом IGeoCodeResult
Методы IGeoCodeResult:
- GetSearchText - возвращает сам текст поискового запроса (На всякий случай)
- GetResultCode - код результата (Ориентируйтесь на коды HTTP, тоесть 200 все хорошо, 404 не найдено, 5xx ошибка сети и тд.)
- GetMessage - Текстовое сообщение с пояснением в случае ошибки
- GetPlacemarksCount - количество найденных точек
- GetPlacemarks - Перебор найденных точек с интерфейсом IGeoCodePalcemark
Методы IGeoCodePalcemark:
- GetPoint - собственно говоря координаты найденной точки
- GetAddress - название или адрес точки
- GetAccuracy - точность нахождения. Взято из API геокодирования гугла.
Функция должна быть тредсейфовой. Тобишь допускать паралельный вызов из нескольких потоков.
- i_GeoCoder.pas
unit i_GeoCoder; interface uses ActiveX, t_GeoTypes; type IGeoCodeResult = interface ['{C90929AD-3A6C-4906-A554-E1DA363ED060}'] function GetSearchText: WideString; safecall; function GetResultCode: Integer; safecall; function GetMessage: WideString; safecall; function GetPlacemarks: IEnumUnknown; safecall; function GetPlacemarksCount: integer; safecall; end; IGeoCodePalcemark = interface ['{744CAB70-0466-433A-AF57-00BD5AFD9F45}'] function GetPoint: TDoublePoint; safecall; function GetAddress: WideString; safecall; function GetAccuracy: Integer; safecall; end; IGeoCoder = interface ['{D9293293-080A-44B7-92F8-3093D35A551B}'] function GetLocations(ASearch: WideString; ACurrentPos: TDoublePoint): IGeoCodeResult; safecall; end; implementation end.
/home/sasgisor/public_html/wikisasiya/data/pages/pluginapi/plugintype/геокодирование.txt · Последнее изменение: — 127.0.0.1
