WP7 Bing地图基于推针收集位置缩放级别

时间:2012-05-09 11:42:58

标签: windows-phone-7 bing-maps

关于使用以下代码段的简短问题:

var locations = CurrentItems.Select(model => model.Location);
map.SetView(LocationRect.CreateLocationRect(locations));

如本回答所示: Zoom to show all locations in bing maps

我正在检索geocoordinate asynchrounsly的列表,并使用ObservableCollection将这些列表绑定到Bing Map;使用以下方法将结果数据复制到主UI线程:

Deployment.Current.Dispatcher.BeginInvoke( ()=> {...} )

我的问题是,我无法在Dispatcher中引用地图控件(或者我可以吗??),因此如何使用以下方法将新的Pushpin位置应用于地图:

map.SetView(LocationRect.CreateLocationRect(locations));

谢谢, S上。

2 个答案:

答案 0 :(得分:0)

因为Map最终来自DependencyObject,所以它实际上有自己的Dispatcher。你可以这样做;

map.Dispatcher.BeginInvoke(() => map.SetView(LocationRect.CreateLocationRect(locations)));

此外,值得注意的是,如果BeginInvoke()返回false,则只需拨打CheckAccess()即可。 (CheckAccess标有EditorBrowsable(EditorBrowsableState.Never)属性,因此无法在intellisense中显示,您必须手动输入。常见的模式是;

if (map.Dispatcher.CheckAccess() == false) {
  map.Dispatcher.BeginInvoke(() => map.setView(LocationRect.CreateLocationRect(locations)));
} else {
  map.SetView(LocationRect.CreateLocationRect(locations));
}

答案 1 :(得分:0)

我也许你会发现这篇文章很有用。要绑定地图和ViewModel的视图,所描述的方法使用DependecyPropety:http://sveiberg.wordpress.com/2012/06/24/5/