-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