我只是PropertyChanged
在 iOS 端测试了这个事件,它只是在地图上通过一次缩放或拖动操作触发了一次。
而如果它真的触发了多次,您可以在调用最终PropertyChanged
事件时使用计时器来调用服务器,例如:
public partial class MapPage : ContentPage
{
Timer aTimer;
public MapPage()
{
InitializeComponent();
customMap.PropertyChanged += CustomMap_PropertyChanged;
}
private void CustomMap_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (aTimer != null)
{
aTimer.Enabled = false;
aTimer.Stop();
aTimer.Close();
}
aTimer = new Timer();
aTimer.Interval = 1000;
aTimer.Enabled = true;
aTimer.Elapsed += ATimer_Elapsed;
aTimer.Start();
}
private void ATimer_Elapsed(object sender, ElapsedEventArgs e)
{
aTimer.Stop();
//do web request
Console.WriteLine(sender);
Console.WriteLine("CustomMap_PropertyChanged");
}
}
在上面的代码中,我设置了 Interval = 1 秒,即在 1 秒内,无论触发多少次PropertyChanged
,只有最后一次调用会触发该ATimer_Elapsed
函数。
根据您的要求,可以将间隔设置为任何值。