【问题标题】:GMap.Net for WPF Map Position is not updating when Zooming缩放时用于 WPF 地图位置的 GMap.Net 未更新
【发布时间】:2021-01-15 13:27:05
【问题描述】:

我的 WPF 应用程序 UserControl 包含一个 GMap 控件。

    <UserControl x:Class="Test.test.Map"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:gmmapeprovider="clr-namespace:GMap.NET.MapProviders;assembly=GMap.NET.Core"
             xmlns:prism="http://prismlibrary.com/" 
             xmlns:windowspresentation="clr-namespace:GMap.NET.WindowsPresentation;assembly=GMap.NET.WindowsPresentation" prism:ViewModelLocator.AutoWireViewModel="True">
                <Grid >
                    <windowspresentation:GMapControl 
                    x:Name="mapView" MinZoom="1" 
                    Position="{Binding MapPosition}" 
                    MaxZoom="17" 
                    Zoom="{Binding MapZoom}" 
                    MouseWheelZoomEnabled="True"
                    MouseWheelZoomType ="MousePositionWithoutCenter" 
                    MapProvider="{x:Static gmmapeprovider:GoogleMapProvider.Instance}" 
                    CacheLoc="{Binding XmlFilePath}"
                    IgnoreMarkerOnMouseWheel="True"/>
                </Grid>
      </UserControl>

地图 Position 绑定到 UserControl 的 ViewModel 中的 MapPosition 属性。每次我使用鼠标右键平移地图时,单击并拖动功能,MapPosition 的值都会更新。

这是我的担忧: 我的期望是,如果地图被缩放,当鼠标指针不在控件的中心时,也应该更新 Position 的值。显然,情况并非如此,位置保持不变,除非再次平移地图。

我是否在这里遗漏了一些设置,或者是否有任何可能的解决方法来解决这个问题?

【问题讨论】:

    标签: c# wpf wpf-controls gmap.net


    【解决方案1】:

    我检查了source code,从1740 until 1748 行开始,原来_core._position 是在MouseWheel Zooming 期间更新的,而不是GMapControl.Position。这意味着 UI 控件本身并不知道位置已明显更改。

    这是我制作的pull request,希望它得到所有者的认可。 我刚刚将_core._position 替换为Position

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多