1

我想在地图放大或缩小时缩放 mapoverlay 内容。地图缩放由地图的 ZoomLevel 控制。有人知道将 MapOverlay 中的图像缩放到与地图相同数量的公式吗?

我正在寻找类似的东西

public void OnZoomLevelChanged()
{
    img.Width = initialWidth * Map.ZoomLevel * [someRatioFactor]
    img.Height= initialHeight * Map.ZoomLevel * [someRatioFactor]
}
4

2 回答 2

0

有关缩放/缩放级别的详细信息,请参见此处

http://msdn.microsoft.com/en-us/library/aa940990.aspx

如果每次放大/缩小时都需要缩放到每个像素的正确距离,则可以使用以下函数:

public static double MetersToPixels(double meters, double latitude, double zoomLevel)
    {
        var pixels = meters / (156543.04 * Math.Cos(latitude) / (Math.Pow(2, zoomLevel)));
        return Math.Abs(pixels);
    }
于 2013-10-27T02:23:03.767 回答
0

对于在现实世界场景中应用零食解决方案的每个人:

Math.Cos(double) 

期望一个弧度角。如果你从让我们说的纬度

Geopoint.Latitude 

你需要像这样纠正它的度数:

public static double MetersToPixels(double meters, double latitude, double zoomLevel)
{
    var pixels = meters / (156543.04 * Math.Cos(Math.PI / 180 * latitude) / (Math.Pow(2, zoomLevel)));
    return Math.Abs(pixels);
}

希望这不属于评论还是我应该编辑snakys的帖子?

于 2014-10-10T10:43:13.633 回答