Выбор адреса и сохранение координат места (lat,lng), geo-autocomplete

Ставим тип поля geo-autocomplete (Выбор места).

Передаем в него значение в формате {lat}||{lng}||{geotext}||{JSONoptions}

isnull(lat, '')+'||'+isnull(lng, '')+'||'+isnull(address, '') address

в параметре JSONOptions можно задать JSON для настроек (используем только двойные кавычки, имена параметров также в кавычках).

Подробнее про options - https://developers.google.com/maps/documentation/javascript/places-autocomplete

Пример как сделать ограничение поиска только по городам  - https://stackoverflow.com/questions/8282026/how-to-limit-google-autocomplete-results-to-city-and-country-only

 

При сохранении (SaveItem) распарсиваем полученное значение и сохраняем отдельно поля.

declare @lat nvarchar(128),
    @lng nvarchar(128),
    @geotext nvarchar(128),  
    @temp nvarchar(128)

set @lat  = [dbo].[str_splitPart](@fieldaddress, '||', 1)
set @temp  = [dbo].[str_splitPart](@fieldaddress, '||', 2)
set @lng  = [dbo].[str_splitPart](@temp, '||', 1)
set @geotext  = [dbo].[str_splitPart](@temp, '||', 2)

Примечание: Обязательно используйте при конкатенации isnull (иначе если координаты не будут установлены - все значение будет null).

Настройки options_code1 для поля geo-autocomplete:

jsonOptions - строка с JSON настройками гео (смотри документацию по Гео). Это именно вложенный объект JSON.          

Пример, как сделать так, чтобы показывались только бизнес-объекты и настройки без ограничений типа объектов (по умолчанию types= ["geocode"]):

-- SELECT 1 in GetItem - только бизнес-объекты
select '{
    	   "jsonOptions": "{\"types\": [\"establishment\"] }"

    	}' options_geoAddress


-- SELECT 1 in GetItem - без ограничений по типу
select '{
    	   "jsonOptions": "{\"types\": [] }"

    	}' options_geoAddress

Детали - https://developers.google.com/maps/documentation/places/web-service/supported_types#table3

Страница-источник на сайте falconspace.ru