добавить собственный маркер (квадрат) в Gmap

По сути, я хочу нарисовать заполненный квадрат и добавить его (и использовать) в качестве маркера в Gmap. Я попытался нарисовать квадрат и использовать его как растровое изображение, но он запрашивает у меня координаты x y, и я не знаю, какие значения для этого указать, потому что маркер уже использует широту/долготу. Я пытаюсь это сделать, но позиция квадрата неверна. Я хочу, чтобы квадрат отображался на указанной широте/долготе.

Bitmap flag = new Bitmap(50, 50);
gmap.MapProvider = GMap.NET.MapProviders.BingHybridMapProvider.Instance;
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
Graphics fg = Graphics.FromImage(flag);
fg.FillRectangle(Brushes.Red, 100, 100, 50, 50);
GMapOverlay markerOverlay = new GMapOverlay(NametextBox.Text);
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(-25.966688, 32.580528),flag);
markerOverlay.Markers.Add(marker);
gmap.Overlays.Add(markerOverlay);

person Vaibhav Pandya    schedule 11.05.2015    source источник
comment
Я отредактировал ваш заголовок. См. Должны ли вопросы включать «теги» в свои заголовки?, если нет единого мнения, не следует.   -  person John Saunders    schedule 11.05.2015


Ответы (3)


Чтобы нарисовать заполненный квадрат, выполните следующие действия:

  1. Щелкните правой кнопкой мыши на настройках проекта.
  2. Перейдите к ресурсам> добавить ресурс> новое изображение.
  3. Дважды щелкните новое созданное изображение.
  4. Открывается пустая страница. Нарисуйте все, что вам нравится, и сохраните это.

Для построения я использовал следующий пример:

GMapMarker marker = new GMarkerGoogle(new PointLatLng(-25.966688, 32.580528), new Bitmap(Properties.Resources.image8));
gmap.Overlays.Add(markers);   // overlay added
markers.Markers.Add(marker);

Надеюсь, что это работает для вас.

person pranjal khanduri    schedule 04.05.2017

Использование учебника GMap.NET — Карты, маркеры и многоугольники

Код, который они предоставляют для пользовательских маркеров и его назначения наложению, выглядит следующим образом:

GMapOverlay markersOverlay = new GMapOverlay("markers");
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(-25.966688, 32.580528), GMarkerGoogleType.green);
markersOverlay.Markers.Add(marker);
gmap.Overlays.Add(markersOverlay);

Надеюсь это поможет.

person Solorn    schedule 11.05.2015

Насколько я понимаю ваш вопрос, проблема заключается не в создании самого растрового изображения, а в том, что флаг не отображается в правильном месте. Чтобы он отображался в правильном месте, вам придется изменить свойство Offset объекта Marker.

Bitmap flag = new Bitmap(50, 50);
gmap.MapProvider = GMap.NET.MapProviders.BingHybridMapProvider.Instance;
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
Graphics fg = Graphics.FromImage(flag);
fg.FillRectangle(Brushes.Red, 100, 100, 50, 50);
GMapOverlay markerOverlay = new GMapOverlay(NametextBox.Text);
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(-25.966688, 32.580528),flag);
marker.Offset = new Point(-flag.Width/2, -flag.Height/2);  // Set point to middle of bitmap
markerOverlay.Markers.Add(marker);
gmap.Overlays.Add(markerOverlay);
person MrWuf    schedule 14.08.2019