设置BingMap放大LocationRect

本文关键字:LocationRect 放大 BingMap 设置 | 更新日期: 2023-09-27 17:50:11

我试图将必应地图的缩放级别设置为比LocationRect稍微向后一点。我四处找了一下,找不到任何有关它的东西。这是设置地图

视图的代码
myMap.SetView(new LocationRect(locationCollection));
中使用的

Windows 8应用程序XAML/c#:在一个方法中设置多个图钉到Bing地图

设置BingMap放大LocationRect

我遇到过几次这种情况。通常人们从图钉使用的位置集合创建一个LocationRect,然后设置视图以发现一些图钉在视图之外。这是因为LocationRect不考虑图钉的像素大小,而只关注坐标。在V7中,我们有一个添加填充的选项,但同样的选项不在Windows Store SDK中。我写了一篇博客文章,关于如何计算基于位置集合的最佳地图视图与buffer()。使用这个方法,我将这个可重用的方法组合在一起,用于计算带缓冲区的边界框的缩放级别。然后,您可以使用这个缩放级别和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;
}

不幸的是,据我所知,没有像AJAX v7中那样的'padding'选项。

一种可能的做法是添加虚假的位置是这个LocationCollection,所以你可以手动扩展区域(你可以使用缩放级别和位置来计算地图分辨率,以更好地定位那些虚假的位置)