Bob*_*ham 1 c# bing-maps windows-8.1
我正在尝试将Bing Map的缩放级别设置为比LocationRect略微更靠后.我环顾四周,找不到任何关于它的东西.这是设置地图视图的代码
myMap.SetView(new LocationRect(locationCollection));
Run Code Online (Sandbox Code Playgroud)
我偶然发现过这个问题.通常人们从图钉使用的位置集合创建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)
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |