从必应地图切换到Google地图

|                                                                                                                   关闭。这个问题是基于意见的。它当前不接受答案。                                                      
已邀请:
我要说,您需要考虑两个主要领域-技术和法律。 技术 从技术角度来看,Bing Maps Silverlight控件是基于Silverlight的(显然!),而Google Maps API是基于Javascript的。 Silverlight和Javascript都在客户端的浏览器中执行,但是在那之后,相似之处就结束了! Silverlight应用程序通常使用Visual Studio之类的工具以C#编写,并在部署之前进行编译。相反,Javascript是用纯文本编写的,通常不进行编译。 所有现代Web浏览器(包括智能手机浏览器(iOS,Android,Blackberry))都支持Javascript,而Silverlight应用程序要求客户端安装Silverlight插件。 Silverlight的主要优点在于,它能够提供更好的UX,缩放和平移更流畅,渲染速度更快,并且能够在地图上显示大量数据(例如,Google Maps javascript控件通常会在几百个图钉,而Bing Maps SL控件可以在注意到减速之前显示数千个。) 这些技术完全不同,因此,如果您决定创建Google Maps javascript版本和Bing Maps SL版本,则必须完全重新编码并维护应用程序的两个单独版本。 Mapstraction将无济于事,因为那仅与javascript映射提供程序打交道。 (您当然可以使用Bing Maps v7 Javascript控件,但是您也必须重新编码才能使用它)。 法律 至于法律方面的问题,建议您参考Google和Bing的使用条款,可以从http://code.google.com/apis/maps/terms.html和http:// www访问分别为.microsoft.com / maps / product / terms.html。 我不是律师,但是请您注意以下部分: 根据Google使用条款: 10.1.1。一般限制。 (a)除通过服务外,无权访问Maps API。您不得通过服务中未提供的任何技术或手段,或通过Google可能指定的其他明确授权的手段来访问或使用Maps API或任何内容。例如,您不得通过除Maps API之外的界面或渠道(包括未记录的Google界面)访问地图图块或图像。 -这似乎显然禁止了ColinE建议的使用方式,该方式涉及直接从Bing Maps SL击中Google的磁贴服务器。 10.2a)禁止“包装”。除非获得Google的书面同意,否则您不得为服务创建或提供“包装”。例如,您不得:(i)使用或提供给他人的API使用服务或内容的任何部分(例如地图图像,地理编码,方向,位置或地形数据);或(ii)创建可重新实现或复制Google Maps的Maps API实现。 -这向我暗示,除非他们获得明确的许可(我可能不知道这样做),否则Mapstraction库本身违反了Google的使用条款,因为它提供了Google API的包装层。 而且,根据Bing的使用条款: 2i。)您可能不会...     将Bing Maps Platform或其任何内容与任何其他地图平台集成; -目前尚不清楚“集成”的定义是什么,但是我肯定会说,任何在同一界面中公开了Google Maps和Bing Maps元素的应用程序都是集成的,因此违反了Bing \的使用条款以及Google \的使用条款。 因此,如果您确实想要同时使用基于Google和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>
TileSource是一个简单的类,详细描述了源图像的URL格式。例如,以下TileSource可用于在Bing Maps控件中呈现GoogleSky地图:
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/ 因此,为地图提供不同来源非常容易。     

要回复问题请先登录注册