我有一个动态加载到 WPF 图像控件中的图像。(这是一张地图。)
当用户设置坐标(这是从 GPS 保存的航点)时,我想从 C# 在地图上标记该位置。
调整应用程序窗口大小时,标记应留在地图上的正确位置。
地图应随窗口缩放,但不能拉伸。
几天来,我一直在寻找完成这项工作的方法,但除了将图像加载到窗口中之外,别无他法。该图像位于停靠面板中,窗口左侧还有一些其他控件。
我知道的事情:我有地图角落的坐标(经度和纬度)。我有航点的经度和纬度。
用户界面 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 = ??;