我有一个动态加载到WPF图像控件中的图像。 (这是一张地图。)
当用户设置坐标(从GPS保存的航点)时,我想在C#上标记地图上的位置。
调整应用程序窗口大小时,标记应保留在地图上的正确位置。
地图应随窗口缩放,但不能拉伸。
我一直在寻找完成这项工作的方法,但是除了将图像加载到窗口之外,我还没有做更多的事情。图像位于dockpanel中,窗口左侧有一些其他控件。
我知道的事情: 我有地图角落的坐标(经度和纬度)。我有航点的经度和纬度。
UI XAML:
<DockPanel>
<Grid x:Name="ImageGrid">
<Image Stretch="UniformToFill" x:Name="MapImage" Source="locimages/woorim.jpg" />
<Ellipse Name="Marker1" Height="20" Fill="Red" Margin="0,179,152,0" HorizontalAlignment="Right" VerticalAlignment="Top" Width="20"/>
</Grid>
</DockPanel>
代码(不起作用,只显示当前正在进行的纬度/经度计算。):
if (wayPoint.Longitude < minLong || wayPoint.Longitude > maxLong || wayPoint.Latitude < minLat ||
wayPoint.Latitude > maxLat)
{
MessageBox.Show("This point is not in this area. It will not display on this map.");
return;
}
// Map location to image coordinates.
var newX = (wayPoint.Longitude - minLong)/(maxLong - minLong) * MapImage.Source.Width;
var newY = (wayPoint.Latitude - minLat) / (maxLat - minLat) * MapImage.Source.Height;
//Marker1.Margin = ??;