2012-04-25 65 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。