Silverlight 从Bing地图切换到Google地图

Silverlight 从Bing地图切换到Google地图,silverlight,google-maps,bing-maps,Silverlight,Google Maps,Bing Maps,我正在Silverlight上使用Bing地图开发一个应用程序。 最近,有人问我需要多长时间才能切换到或支持谷歌地图 我知道这可能是一种方法。但这种迁移有多困难/耗时?我没有找到任何关于这件事的证明 还有别的选择吗?理想情况下,应用程序应该支持这两种映射 稍后编辑:当然,解决方案应该是跨平台和跨浏览器的:Silverlight Bing Maps控件支持层的概念,其中每个层由一个TileSource描述: <map:Map Name="map" CopyrightVisibilit

我正在Silverlight上使用Bing地图开发一个应用程序。 最近,有人问我需要多长时间才能切换到或支持谷歌地图

我知道这可能是一种方法。但这种迁移有多困难/耗时?我没有找到任何关于这件事的证明

还有别的选择吗?理想情况下,应用程序应该支持这两种映射


稍后编辑:当然,解决方案应该是跨平台和跨浏览器的:

Silverlight Bing Maps控件支持层的概念,其中每个层由一个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>
请参阅以下博文:


所以,很容易为你的地图提供不同的来源。

< P>我会说你需要考虑的两个主要领域——技术和法律。 技术的

从技术角度来看,Bing Maps Silverlight控件显然是基于Silverlight的!,而谷歌地图API是基于Javascript的。Silverlight和Javascript都是在客户端的浏览器中执行的,但是,在那之后,相似之处就到此为止了

Silverlight应用程序通常用C语言编写,使用Visual Studio等工具,并在部署前编译。相比之下,Javascript是用纯文本编写的,通常不编译。 所有现代网络浏览器都支持Javascript,包括智能手机浏览器iOS、Android、Blackberry,而Silverlight应用程序要求客户端安装Silverlight插件。 Silverlight的主要优势在于,它能够提供更好的用户体验,具有更平滑的缩放和平移,更快的渲染,并且能够在地图上显示更多的数据,例如Google Maps javascript控件在几百个图钉之后通常会变得迟钝,而Bing Maps SL控件可以在注意到减速之前显示数千。 这两种技术完全不同,因此如果您决定创建Google Maps javascript版本和Bing Maps SL版本,那么您需要完全重新编码并维护两个独立的应用程序版本。Mapstraction不会有帮助,因为它只处理javascript映射提供程序。当然,您可以使用Bing Maps v7 Javascript控件,但也必须重新编码才能使用该控件

合法的

至于法律方面,我建议你参考谷歌和必应的使用条款,你可以分别在和访问。 我不是律师,但我想请你注意以下几部分:

谷歌使用条款:

10.1.1。一般限制。 a除非通过服务,否则无法访问地图API。您不得通过服务中提供的技术或手段以外的任何技术或手段,或通过谷歌可能指定的其他明确授权手段,访问或使用地图API或任何内容。例如,您不得通过接口或通道访问地图分幅或图像,这些接口或通道包括除地图API之外的未记录的Google接口

-这似乎明确禁止了科林建议的那种使用,包括直接从Bing Maps SL访问谷歌的tile服务器

10.2a禁止“包装”。除非获得谷歌的书面同意,否则不得为服务创建或提供“包装”。例如,您不允许:我使用或提供您提供给他人的API中的服务或内容的任何部分,如地图图像、地理编码、方向、地点或地形数据;或者我可以创建一个地图API实现来重新实现或复制谷歌地图

-这对我来说意味着,除非他们获得了明确的许可,否则Mapstraction库本身就违反了谷歌的使用条款,因为它在谷歌的API上提供了一个包装层

根据必应的使用条款:

2i。你不可以。。。 将Bing地图平台或其任何内容与任何其他地图平台集成

-集成的确切定义尚不清楚,但我肯定会说,任何在同一界面中同时公开谷歌地图和必应地图元素的应用程序都是集成的,因此违反了必应和谷歌的使用条款


因此,如果你真的想要基于Google和Bing的地图,你必须创建和维护两个独立的版本。

这可能取决于你使用的Bing地图的版本。我发现6.3版AJAX与Google的API非常相似,但7.0版似乎有很大的不同。我以前从未听说过Mapstraction,但它对于独立于实现的地图来说很有希望。@Matt是的,看起来很有希望,所以这就是为什么我想知道是否有人用这个工具完成了一个项目。或其他工具。基本上,抽象您正在使用的地图是一个好主意。但我需要知道危险,缺点,为什么不。。。
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;
    }
}