项目: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. */
}
的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。如果我解决了这个问题,我会在这里发布。我想这对其他人非常有帮助。
另外,我在StackOverflow上发现了很多关于GMap的问题,等等,以及我看到Overlay类的所有地方。
GMapOverlay markersOverlay = new GMapOverlay("markers");
gmap.Overlays.Add(markersOverlay);
在我的诗句中,我没有这个。我已经在GMap类中存在内置标记叠加。
gmap.Markers - ObservableCollection of the GMapMarkers.
并且无法创建自己的叠加层并将其添加到GMapControl对象。
更新0:
我头脑中的第一个想法。例如,只需在地图上添加GMapMarkers,并使用地图对象的id添加一些特殊标记。并且GMapControl的OnRender()在屏幕上找到所有标记,解析它们的ID并在我的wpf UserControls上方绘制。但我希望GMapControl中有一些内部机制。
答案 0 :(得分:1)
我认为解决方案比您尝试的更容易,您可以从if (cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK) {
return true;
}
return false;
派生,例如:
GMapMarker
此标记实例允许您访问自己的class CustomMarker: GMapMarker
{
public string Description { get; set; }
public CustomMarker(PointLatLng pos, string description)
: base(pos)
{
Description = description;
Shape = new CustomMarkerElement();
((CustomMarkerElement)Shape).lblDesc.Content = description;
}
}
(项目中的CustomerMarkerElement
)内的UI属性:
UserControl
缺点是afaik没有办法以符合MVVM的方式使用它(例如在项目模板中定义自定义标记)。