C#: GMap.Net.Core создание маркеров на основе записей в БД
В наличии таблица MS SQL, которая содержит колонки:
PointsName NVARCHAR(50)//Название точки
PointsNameRus NVARCHAR(50)//название точки на русском
Longitude FLOAT// координата долготы
Latitude FLOAT // координата широты
PointsImg IMAGE //изображение с иконкой точки
Задача: создать маркеры на карте на основании данных из таблицы
Ответы (1 шт):
Автор решения: sky_diez
→ Ссылка
В примере используется работа с данными с помощью Ado.net:
private void ShowMarkers()
{
GMapOverlay markers_layer = new GMapOverlay("markers"); // Создаем слой
forMapTableAdapter1.Fill(skyDBDataSet1.ForMap);// загружаем таблицу с точками и координатами
//здесь ForMap - таблица в БД,
//skyDBDataSet1 - класс Ado.net для работы с БД,
//forMapTableAdapter1 - TableAdapter для работы с таблицей
foreach (DataRow row in skyDBDataSet1.ForMap.Rows) //перебираем строки в таблице
{
double longitude = (double)row["Longitude"]; //получаем значение долготы из таблицы
double latitude = (double)row["Latitude"]; //получаем значение широты из таблицы
string point_name = row["PointsNameRus"].ToString(); // получаем название точки из таблицы
string point_type_name = row["PointsTypeName"].ToString();
MemoryStream ms = new MemoryStream((byte[])row["PointsTypeImg"]);//получаем изображение из БД и переводим в MemoryStream
Bitmap bitmap = (Bitmap)Bitmap.FromStream(ms); //переводим MemoryStream в понятный GMap Bitmap
GMapMarker marker = new GMarkerGoogle(new PointLatLng(longitude, latitude), bitmap); //создаём маркер и присваиваем ему наше изображение
markers_layer.Markers.Add(marker);// Добавляем маркер на слой
marker.ToolTipText = "\n" + point_name; // задаем всплывающую подсказку с названием
gMapControl1.Overlays.Add(markers_layer);// Добавляем слой на карту
}
}