-1
我正在開發一個在Silverlight上使用Bing地圖的應用程序。 最近,我被問到我需要多少時間切換到或支持Google地圖。從Bing地圖切換到Google地圖
我知道Mapstraction可能是一種方法。但是這種遷移有多困難/耗時?我沒有找到任何這方面的證言。
有什麼選擇?理想情況下,應用程序應該支持這兩個地圖。
稍後編輯:當然,該解決方案應該是跨平臺和跨瀏覽器:)
我正在開發一個在Silverlight上使用Bing地圖的應用程序。 最近,我被問到我需要多少時間切換到或支持Google地圖。從Bing地圖切換到Google地圖
我知道Mapstraction可能是一種方法。但是這種遷移有多困難/耗時?我沒有找到任何這方面的證言。
有什麼選擇?理想情況下,應用程序應該支持這兩個地圖。
稍後編輯:當然,該解決方案應該是跨平臺和跨瀏覽器:)
Silverlight的Bing地圖控件支持層,其中每一層由TileSource描述的概念:
<map:Map Name="map"
CopyrightVisibility="Collapsed" LogoVisibility="Collapsed" ScaleVisibility="Collapsed"
ZoomLevel="2"
CredentialsProvider="-- YOUR API KEY GOES HERE!!! ---">
<map:Map.Mode>
<mapCore:MercatorMode/>
</map:Map.Mode>
<map:MapTileLayer>
<map:MapTileLayer.TileSources>
<local:GoogleTile/>
</map:MapTileLayer.TileSources>
</map:MapTileLayer>
</map:Map>
TileSource是一個簡單的類,它詳細說明了源圖像的URL格式。例如,可以使用以下TileSource呈現Google星空地圖在Bing地圖控制:
public class GoogleTile : Microsoft.Phone.Controls.Maps.TileSource
{
public GoogleTile()
{
UriFormat = @"http://mw1.google.com/mw-planetary/sky/skytiles_v1/{0}_{1}_{2}.jpg";
}
public override Uri GetUri(int x, int y, int zoomLevel)
{
if (zoomLevel > 0)
{
var Url = string.Format(UriFormat, x, y, zoomLevel);
return new Uri(Url);
}
return null;
}
}
請參見下面的博客文章:
http://www.scottlogic.co.uk/blog/colin/2011/02/google-sky-on-windows-phone-7/
所以,這是很容易提供您的地圖的不同來源。
這可能取決於您使用的Bing地圖版本。我發現版本6.3(AJAX)與Google的API非常相似,但版本7.0似乎有很大不同。 – 2011-04-15 19:52:18
我從來沒有聽說過Mapstraction直到現在,但它看起來很有希望用於獨立於實現的地圖。 – 2011-04-15 19:55:44
@Matt是的,看起來很有希望,所以這就是爲什麼我想知道是否有人用這個工具完成了一個項目。或其他工具。基本上抽象你正在使用的地圖是一個好主意。但我需要知道危險,缺點,爲什麼不... ... – Adi 2011-04-15 20:04:16