Нужен класс который, будет реализовывать интерфейс IGeoCoder, описанный в юните i_GeoCoder.pas При вызове GetLocations он должен взять полученный текст запроса, обратится к сервису геокодирования, например Гугл, Яндекс или еще что-то, или к своей локальной базе (Пока настройки для плагинов не реализованы название файла с базой зашивать в коде) и вернуть пользователю объект с интерфейсом IGeoCodeResult Методы IGeoCodeResult: * GetSearchText - возвращает сам текст поискового запроса (На всякий случай) * GetResultCode - код результата (Ориентируйтесь на коды HTTP, тоесть 200 все хорошо, 404 не найдено, 5xx ошибка сети и тд.) * GetMessage - Текстовое сообщение с пояснением в случае ошибки * GetPlacemarksCount - количество найденных точек * GetPlacemarks - Перебор найденных точек с интерфейсом IGeoCodePalcemark Методы IGeoCodePalcemark: * GetPoint - собственно говоря координаты найденной точки * GetAddress - название или адрес точки * GetAccuracy - точность нахождения. Взято из API геокодирования гугла. Функция должна быть тредсейфовой. Тобишь допускать паралельный вызов из нескольких потоков. 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.