2011-06-07 79 views
1

因此,我非常習慣在Silverlight中使用Bing地圖控件,但我設法獲取圖釘對象的集合(每個圖標都帶有緯度/經度值)繪製在地圖上。根據Silverlight的Bing地圖控件中的縮放級別更改圖釘可見性

我現在的問題是,如何根據當前縮放級別更改這些可見性?

說我有分散在英國10個地點,我只希望他們看到的時候,英國是在當前視圖,而不是當整個世界都在看...

我意識到這是一個非常普遍的問題,但任何幫助將是太棒了!

克里斯

回答

1

它將幫助,如果你明白

  • 會有地理座標和位置是兼容的。
  • 裁剪矩形故意比地圖稍大,以便稍微偏離地圖的標記邊緣可見,從而提示用戶平移。

設置擴展方法。

public static class ExtensionMethods 
{ 
    public static bool Contains(this LocationRect r, GeoCoordinate p) 
    { 
    double w = r.West - 0.2; 
    double e = r.East + 0.2; 
    double s = r.South - 0.2; 
    double n = r.North + 0.2; 
    return w <= p.Longitude && p.Longitude <= e && s <= p.Latitude && p.Latitude <= n; 
    } 
} 

檢查每個引腳是否在地圖範圍內,並使用像這樣的表達式。

map.TargetBoundingRectangle.Contains(pin.Location) 

如果你點是一個IEnumerable然後導入LINQ,你可以用這樣的表達,它返回一個包含僅在需要時顯示針腳的收集過程他們都一氣呵成。

pushpins.Where(pin => map.TargetBoundingRectangle.Contains(pin.Location)) 

在地圖的ViewChangeEnd事件處理程序中執行剪裁。如果你有很多針腳,你的下一個問題的答案是「四叉樹」。看看它。

相關問題