如何解决从必应地图切换到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/
因此,为地图提供不同来源非常容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。