Проект: C#, wpf, .net4.0, Gmap.Net.Presentation 1.7.1.GMAP.NET C# WFP: Можно ли добавить пользовательский UserControl в наложения GMapControl?
Что у меня есть:
Мой пользовательский класс MapControl унаследовал от класса GMap.NET.WindowsPresentation.GMapControl.
public sealed class MapControl : GMapControl
{
/* Some special data. */
public MapConrol()
: base()
{
/* Some init actions. */
}
/* Overrided and additional methods. */
}
И, например, у меня есть собственный пользовательский класс UserControl.
Код:
public sealed partial class MapObjectMarkerUiControl : UserControl
{
/* Some special data. */
public MapObjectMarkerUiControl()
{
/* Some init actions. */
}
/* Overrided and additional methods. */
}
Xaml:
<UserControl x:Class="MapCustomControls.MapObjectMarkerUiControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Width="40" Height="40" RenderTransformOrigin="0.5, 0.5">
<Grid>
<!-- Some visual controls: text, buttons, etc. -->
</Grid>
</UserControl>
Пример таможенного контроля пользователя:
Что мне нужно:
Есть ли способ добавить его к карте со ссылкой на гео координаты? Что-то вроде этого: gmap.AddCustomUserControl(UserControl customMarker, double latitude, double longitude);
Может быть, я должен наследовать свой UserControl из другого класса или реализовать некоторый интерфейс Gmap.NET, который позволит добавить мой виджет к карте.
Любые советы, советы, помощь?
P.S. Если я решит эту проблему, я отправлю ее здесь. Думаю, это будет очень полезно для других.
Кроме того, я нашел много вопросов о GMap на StackOverflow и т. Д., И везде я видел класс Overlay.
GMapOverlay markersOverlay = new GMapOverlay("markers");
gmap.Overlays.Add(markersOverlay);
В моей verstion у меня нет этого. У меня уже есть встроенное наложение маркера в класс GMap.
gmap.Markers - ObservableCollection of the GMapMarkers.
И нет никакого способа, чтобы создать свои собственные пометки и добавить его к объекту GMapControl.
ОБНОВЛЕНИЕ 0:
Первая мысль в моей голове. Просто добавьте GMapMarkers на карту с некоторым специальным тегом по идентификатору объекта карты, например. И OnRender() из GMapControl находят все маркеры на экране, анализируют их идентификаторы и рисуют над моим wpf UserControls. Но я надеюсь, что для этого в GMapControl есть встроенная механика.
Я не знаю GMap, но я чувствую, что должно быть легко добавить любой элемент, полученный из UIElement, на карту и указать его местоположение каким-то прикрепленным свойством. Если это невозможно, вы должны попробовать другой элемент управления, например. Bing Maps или XAML Map Control. У них есть MapItemsControl с ItemTemplate (или ItemContainerStyle), где вы можете поместить любой UIElement. И это будет MVVM. – Clemens
Спасибо за совет. Теперь я пытаюсь найти аналог MapItemsControl в GMap. Если его не существует, я не найду другого решения - изменим свой контроль над картой. – Binakot