我正在创建一个Windows 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();
}
}发布于 2014-09-08 16:00:18
我的应用程序也有类似的问题,所以我建议采用两种不同的方法:
选项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;
}
}您所做的是将您的函数设置为encueue,如果用户继续移动,您希望再次搜索该函数。
https://stackoverflow.com/questions/25724186
复制相似问题