在WindowsPhone8中缩放MapOvleray

时间:2013-10-23 14:25:47

标签: c# windows-phone-8 zoom image-zoom here-api

我希望在地图放大或缩小时缩放mapoverlay内容。 地图缩放由地图的ZoomLevel控制。 有人知道一个公式,它在MapOverlay中缩放与地图相同的数量吗?

我正在寻找像

这样的东西
public void OnZoomLevelChanged()
{
    img.Width = initialWidth * Map.ZoomLevel * [someRatioFactor]
    img.Height= initialHeight * Map.ZoomLevel * [someRatioFactor]
}

2 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:0)

对于每个人在现实世界中应用小吃的解决方案szenario:

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);
}

希望这不属于评论,还是我应该编辑零食?