Карта с маркерами

Поиск по карте - это отдельный режим работы компонента Таблица.
Смотреть пример карты с точками




Для показа карты, необходимо сделать следующее: 
  1. Создать таблицу с колонками (все строки)
    1. id - идентификатор точки (для возможных операций с точкой),
    2. lat - долгота точки, 
    3. lng - широта точки, 
    4. description - описание, которое появляется в окне при клике на маркер точки,
    5. tooltip - всплывающая подсказка при наведении на точку, 
    6. radius - радиус региона. 
    7. canDrag - если 1, то точки можно перемещать по карте и сохранять в базе новые значения (при перемещении вызывается updateItemField с code=marker, id=id точки и value = "lat||lng")
    8. Дополнительно можно добавить следующие столбцы (стилизация точек и регионов) 
      1. fillColor: '#a0bfeb',
      2. fillOpacity: 0.2,
      3. strokeColor: '#000000',
      4. strokeOpacity: 1,
      5. strokeWeight: 1
  2. Прописать запрос GetItems
    1. MapShowUserLocation bit - показывать пользователя на карте? 
    2. MapUserImageUrl nvarchar(256) - путь к картинке пользователя.
    3. MapShowAllRegions bit - показать все локации обслуживания всех точек
    4. MapShowLocationInRange bit - показать локацию, в которую попадает пользователь
    1.   SELECT 1(с колонками id int, lat nvarchar(32), lng nvarchar(32), description nvarchar(max), tooltip nvarchar(128), radius int)
    2. в SELECT 3 ставим ViewType='map',доп параметры в SELECT 3 
Примечание: 
  1. Карта будет работать только в случае, если вы указали ключ Google API в GetLayout (GeoLocationKey).
  2. В description к маркеру можно вставлять сниппеты компонентов (например, Форму). Инициализация компонентов идет по клику на маркере.
  3. В общем случае моменты с координатами передаем в формате lat||lng||text_address (в UpdateField передается lat||lng)
 Если точки можно перемещать, то также реализуем процедуру UpdateField

CREATE PROCEDURE [dbo].[crud_testMap_updateField]
	@itemID int,
	@field nvarchar(64),
	@value nvarchar(max),
	@username nvarchar(64)
AS
BEGIN

if(@field = 'marker') begin
	declare @lat nvarchar(32), @lng nvarchar(32)
	set @lat = [dbo].[str_splitPart](@value,  '||',	1	)
	set @lng = [dbo].[str_splitPart](@value,  '||',	2	)

	update tst_addresses
    set lat = @lat, lng = @lng
    where id = @itemID
end else begin
	select 'Невалидный код свойства' Msg, 0 Result
	return
end
select '' Msg, 1 Result

END

В SELECT 3 также можно передать параметр mapOptions, в котором устаналиваются настройки карты в виде JSON. Документация по настойкам карты Гугл - https://developers.google.com/maps/documentation/javascript/interaction

Пример настройки: 

-- 3 SELECT Дополнительные настройки таблицы
select 'map' ViewType,
	0 MapShowUserLocation,
        '' MapUserImageUrl,
        0 MapShowAllRegions,
        0 MapShowLocationInRange,
        1 HideTitleCount, ' ' Title,
            '{
                "center":{"lat": 39.913818, "lng": 116.363625},
                "zoom": 4,
                "fitBound": false,
                "afterMoveMarkerRefreshContainer": "body"

            }' MapOptions

Кастомные настройки (которые не относятся к плагину карты Google). 

  • fitBound - если 1, то карта будет адаптировать zoom и область, чтобы вывести все выбранные точки. 
  • afterMoveMarkerRefreshContainer - указываем селектор контентера, который надо обновлять после перемещения точки (например, чтобы обновить какую-то форму или таблицу на странице).
  • mapCenter - задает центр карты в виде {"lat": 12.34234, "lng": 43.2321}

Возможные проблемы с картой

Если появляется серый прямоугольник вместо карты и нет ошибок в консоли, это означает, что вам необходимо установить параметры zoom и mapCenter. Пример: 

-- SELECT 3
SELECT  '{
        	"zoom":9,
            "mapCenter": {"lat":55.760533, "lng": 37.487028}
        }' MapOptions

Альтернатива - использовать fitBound=1 (в этом случае карта (ее center и zoom) будет адаптироваться под точки на ней). 

Примечание