项目:c#、wpf、.net4.0、Gmap.Net.Presentation 1.7.1。
我有的:
我的自定义 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. */
}
xml:
<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 接口。
任何建议,提示,帮助?
PS如果我解决了这个问题,我会在这里发布。我想这对其他人会很有帮助。
另外,我在 StackOverflow 等上发现了很多关于 GMap 的问题,到处都看到了 Overlay 类。
GMapOverlay markersOverlay = new GMapOverlay("markers");
gmap.Overlays.Add(markersOverlay);
在我的版本中,我没有这个。我已经在 GMap 类中存在内置标记覆盖。
gmap.Markers - ObservableCollection of the GMapMarkers.
并且无法创建自己的叠加层并将其添加到 GMapControl 对象。
更新0:
我脑海中的第一个想法。例如,只需通过地图对象的 id 在地图上添加一些特殊标记的 GMapMarkers。GMapControl 的 OnRender() 找到屏幕上的所有标记,解析它们的 id 并在我的 wpf UserControls 上方绘制。但我希望 GMapControl 中有一些内部机制。