Карта с точками выводится как специальный режим компонента таблицы (viewMode=yamap).
Внимание! Бесплатная версия Яндекс Карт имеет ограничения. Про тарифы и ограничения бесплатной версии - https://yandex.ru/dev/maps/commercial/
Демостенд отображения точек на карте Яндекс.
Множество интерактивных примеров от Яндекса, которые позволят лучше понять настройки отображения карт - https://yandex.ru/dev/maps/jsbox/2.1/icon_customImage
Для настройки карты необходимо сделать следующее:
0 Получаем ключ API Яндекс Карт - https://yandex.ru/dev/maps/jsapi/doc/2.1/quick-start/index.html#get-api-key. В будущем управлять своими ключами API Яндекса можно здесь - https://developer.tech.yandex.ru/services
1. Создаем таблицу без столбцов (столбцы можно будет добавить только в случае необходимости фильтров).
2. Прописываем GetItems
В SELECT 1 указываем точки
В SELECT 3 указываем viewType=yamap и yamapOptions
Пример:
CREATE PROCEDURE [dbo].[crud_yamap_getItems]
@filters CRUDFilterParameter READONLY,
@sort sql_variant,
@direction nvarchar(8),
@page int,
@pageSize int,
@username nvarchar(32)
AS
BEGIN
declare @points table (id int, lat float, lng float, hint nvarchar(max), draggable bit,
body nvarchar(max), header nvarchar(max), footer nvarchar(max), preset nvarchar(128),
icon nvarchar(max), iconCaption nvarchar(max), iconColor nvarchar(64), iconCaptionMaxWidth int,
formCode nvarchar(64), formItemID int, formBig int, formTitle nvarchar(256), formBtnText nvarchar(64))
insert into @points
select 1 id, 55.66 lat, 37.64 lng, 'hint1' hint1, 1 draggable,
'body1' body, 'header1' header, 'footer1' footer, '' preset,
'' icon, '' iconCaption, '' iconColor, 200 iconCaptionMaxWidth ,
'' formCode, '0' formItemID, 0 formBig, '' formTitle, '' formBtnText
union
select 1 id, 55.46 lat, 37.84 lng, 'hint2' hint1, 1 draggable,
'body2' body, 'header2' header, 'footer2' footer, '' preset,
'' icon, '' iconCaption, '' iconColor, 200 iconCaptionMaxWidth ,
'' formCode, '0' formItemID, 0 formBig, '' formTitle, '' formBtnText
-- SELECT 1
select *
from @points
-- SELECT 2
select 1
-- SELECT 3
select 1 HideTitleCount, 'yamap' viewtype,
'{
"height": "600px",
"key": "----------Наш ключ API----------------------------",
"searchProvider": "yandex#search",
"searchText": "",
"showUserLocation": false,
"mapParams": {
"center": [53.76, 37.64],
"zoom": 9
},
"clustererParams": {
"preset": "islands#invertedGreenClusterIcons"
},
"afterMoveMarkerRefreshContainer": "body"
}' yamapOptions
END
SELECT 1 имеет следующие параметры:
SELECT 3 - Настройки yamapOptions
У точек необходимо установить draggable = 1.
Также необходимо реализовать updateItemField у таблицы.
CREATE PROCEDURE [dbo].[crud_yamap_updateField]
@itemID int,
@field nvarchar(64),
@value nvarchar(max),
@username nvarchar(64)
AS
BEGIN
print @itemID
print @value
print @field
if(@field = 'marker') begin
update t1
set lat = dbo.str_splitPart(@value, '||', 1), lng = dbo.str_splitPart(@value, '||', 2)
where id = @itemID
end else begin
select 'Невалидный код свойства' Msg, 0 Result
return
end
select '' Msg, 1 Result
END
Что передается на вход: