3

我有一个动态加载到 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 = ??;
4

0 回答 0