2012-04-25 61 views
1

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

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请求的情况下加载地图?

提前感谢

Nroblex

+0

答案是肯定的,但我不太了解你的情况,以便给你更好的答案。 – 2012-04-26 16:20:25

+0

我有一个相当大的地图(20 MB,高分辨率)。我想将此地图加载到Bing MapControl中以在WindowsPhone上运行。如何在不使用http请求的情况下将自己的地图加入BingMap控件?那可能吗? – user1160274 2012-04-27 10:45:42

+0

有没有理由不能使用http?将您的自定义地图图块放置在某个地方最容易。然后你可以将'TileSource'指向它们。此外,这些定制瓷砖是否是唯一可见的瓷砖,或者只是补充瓷砖? – 2012-04-27 12:55:12

回答

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/),然后服务于瓷砖from 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。