设置BingMap缩放更大的LocationRect

Bob*_*ham 1 c# bing-maps windows-8.1

我正在尝试将Bing Map的缩放级别设置为比LocationRect略微更靠后.我环顾四周,找不到任何关于它的东西.这是设置地图视图的代码

myMap.SetView(new LocationRect(locationCollection));
Run Code Online (Sandbox Code Playgroud)

Windows 8 App XAML/C#中使用:在一个方法中将多个图钉设置为Bing图

rbr*_*itt 6

我偶然发现过这个问题.通常人们从图钉使用的位置集合创建LocationRect,然后设置视图以发现某些图钉不在视图范围内.这是因为LocationRect没有考虑图钉的像素大小,只关注坐标.在V7中,我们可以选择添加填充,但同样的选项不在Windows Store SDK中.我写了一篇博客文章回顾了如何根据缓冲区()的位置集合计算最佳地图视图.使用这个我把这个可重用的方法放在一起,用于计算带缓冲区的边界框的缩放级别.然后,您可以使用此缩放级别和LocationRect的center属性来设置地图视图.

public double CalculateZoomLevel(LocationRect boundingBox, double buffer, Map map)
{
    double zoom1=0, zoom2=0; 

    //best zoom level based on map width
    zoom1 = Math.Log(360.0 / 256.0 * (map.ActualWidth - 2*buffer) / boundingBox.Width) / Math.Log(2);

    //best zoom level based on map height
    zoom2 = Math.Log(180.0 / 256.0 * (map.ActualHeight - 2*buffer) / boundingBox.Height) / Math.Log(2);

    //use the most zoomed out of the two zoom levels
    var zoomLevel = (zoom1 < zoom2) ? zoom1 : zoom2;

    return zoomLevel;
}
Run Code Online (Sandbox Code Playgroud)