GMap.Net WPF 地图位置在缩放时未更新
GMap.Net for WPF Map Position is not updating when Zooming
我的 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>
Map Position 绑定到 UserControl 的 ViewModel 中的 MapPosition 属性。每次我使用鼠标右键平移地图、单击和拖动功能时,MapPosition 的值都会更新。
这是我的担忧:
我的期望是,如果地图缩放,同时鼠标指针不在控件的中心,位置的值也应该更新。显然,情况并非如此,Position 保持不变,除非再次平移地图。
我是否遗漏了一些设置,或者是否有任何可能的解决方法来解决这个问题?
我检查了 source code, starting from line 1740 until 1748,结果发现 _core._position
是在鼠标滚轮缩放期间更新的而不是 GMapControl.Position
。这意味着 UI 控件本身并不知道位置已明显更改。
这是我制作的 pull request,希望它能被主人收到。
我刚刚将 _core._position
替换为 Position
。
我的 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>
Map Position 绑定到 UserControl 的 ViewModel 中的 MapPosition 属性。每次我使用鼠标右键平移地图、单击和拖动功能时,MapPosition 的值都会更新。
这是我的担忧: 我的期望是,如果地图缩放,同时鼠标指针不在控件的中心,位置的值也应该更新。显然,情况并非如此,Position 保持不变,除非再次平移地图。
我是否遗漏了一些设置,或者是否有任何可能的解决方法来解决这个问题?
我检查了 source code, starting from line 1740 until 1748,结果发现 _core._position
是在鼠标滚轮缩放期间更新的而不是 GMapControl.Position
。这意味着 UI 控件本身并不知道位置已明显更改。
这是我制作的 pull request,希望它能被主人收到。
我刚刚将 _core._position
替换为 Position
。