如何检查Windows Phone 8中的地图中心点是不是已更改
Posted
技术标签:
【中文标题】如何检查Windows Phone 8中的地图中心点是不是已更改【英文标题】:How to check if Map center point is changed in windows phone 8如何检查Windows Phone 8中的地图中心点是否已更改 【发布时间】:2014-11-01 16:02:36 【问题描述】:我正在创建一个 Windows Phone 8 应用程序,我在其中获取地图中心并获取该位置的地址。用户可以通过拖动地图来改变中心。当用户为每个小的更改拖动时,向地图中心投标的属性正在发生变化,它将获取所有这些更改的地址以避免这种情况我正在使用计时器,每 2 秒后我正在检查中心的值是否已更改如果是,请获取如下代码所示的详细信息。当用户从一个点移动到另一个点而不是所有中间点时,是否有任何更优化的方法只能获取中心位置的地址:
当前代码:
private void PickUpMap_CenterChanged(object sender, MapCenterChangedEventArgs e)
if (currentMapLocation != null)
var newCenter = PickUpMap.Center;
Geocoordinate location = currentMapLocation;
var userLocation = location.ToGeoCoordinate();
if (userLocation.GetDistanceTo(newCenter) > 50)
ClosestCabMessage.Text = "Changing..";
ClosestCab = null;
AddressGrid.Visibility = System.Windows.Visibility.Collapsed;
mapLocationAddress.Text = "Changing..";
else
ClosestCabMessage.Text = "Changing ..";
ClosestCab = null;
mapCenterChanged = true;
private async void mapCenterAddressTimerTick(object sender, EventArgs e)
if (mapCenterChanged)
mapCenterChanged = false;
UpdateMapCenterAddress();
【问题讨论】:
【参考方案1】:我的应用程序遇到了类似的问题,因此我建议了两种不同的方法:
选项 A:不检查地图中心何时更改,而是检查用户何时停止与地图交互,然后向地图询问中心并搜索位置
选项 B:你可以在你的函数上做类似的事情
bool callcenter = false;
bool morecenter = false;
if (callcenter == false)
callpcenter = true;
//DO SOMETHING
callcenter = false;
if (morecenter == true)
//CALL FUNCTION AGAIN
morecenter = false;
else
morecenter = true;
您所做的是将您的功能设置为如果用户继续移动,您想再次搜索。
【讨论】:
哪个事件用于检查用户是否按照选项 A 的建议停止与地图交互? 我们可以使用的事件是ResolveCompleted。通过使用它,我们可以轻松避免任何复杂的实现。 是的,ResolveCompleted 可能工作正常,或者可能是 mouseleftbuttonup 或任何从地图释放的触摸。在我的应用程序中,我最终使用了选项 B,因为我的地图位于枢轴内,这会导致奇怪的行为。以上是关于如何检查Windows Phone 8中的地图中心点是不是已更改的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows Phone 8 Bing 地图上设置图钉 (XAML C#)
windows phone 8 - 如何在地图上显示经度和纬度坐标(当前位置)
如何在 Windows Phone 8 应用程序中检查社交网络身份验证?
尝试使用模拟器在 Windows Phone 8 中的地图元素上获取地理位置