将地图图块加载到Bing Map silverlight控件中

时间:2012-04-25 13:33:09

标签: c# silverlight bing-maps windows-phone

我是Windows Phone开发的新手,我目前正在为想要使用自己的地图(构建maptiles)的公司构建应用程序。我想在解决方案中使用BingMap silverlight控件。我的问题是:这真的有可能吗?我试图通过像这样继承MapTiles类来覆盖“GetUri”方法;

public class MyTiles : Microsoft.Phone.Controls.Maps.TileSource
{
    public override Uri GetUri(int x, int y, int zoomLevel)
    {
        if (zoomLevel > 0)
        {
            var Url = string.Format(UriFormat, Server, MapMode, zoomLevel, x, y);
            return new Uri(Url);
        }
        return null;
    }
}

是否可以在没有HTTP请求的情况下加载maptiles?

非常感谢提前

Nroblex

1 个答案:

答案 0 :(得分:1)

不幸的是,唯一的方法是通过互联网托管瓷砖:http://social.msdn.microsoft.com/Forums/en-US/94c2d9bc-f1a7-4201-9e5a-4d6a47d285cb/maptilelayer-with-local-tiles?forum=bingmapswindows8

在开发过程中,您可以尝试使用WAMP(http://www.wampserver.com/en/),然后从localhost提供切片:

MapTileLayer tileLayer = new MapTileLayer();
tileLayer.GetTileUri += tileLayer_GetTileUri;

private void tileLayer_GetTileUri(object sender, GetTileUriEventArgs e)
{
    string quadkey = TileToQuadkey(e.X, e.Y, e.LevelOfDetail);
    e.Uri = new Uri(String.Format("http://localhost/tiles/{0}.png", quadkey));
}

此处描述了TileToQuadkey方法:http://msdn.microsoft.com/en-us/library/bb259689.aspx

但是对于生产,您需要将WAMP替换为您自己的Web服务器。