| HT's profile微软必应地图(Bing Maps, former...PhotosBlogLists | Help |
|
|
November 24 必应地图SilverLight控件入门讲座之一:显示地图几乎所有的讲座第一讲,是一定要降低难度以鼓励大家快速上手。地图应用的的第一讲莫过于如何显示地图。用必应地图SilverLight控件显示地图似乎比JavaScript更简单。
看图说话吧,没有比这个更简单了。
1、打开VS2008,创建SilverLight Project
2、选择Host the Silverlight application in a new web site
3、添加Bing Maps Silverlight Control Reference,通常在必应地图SilverLight地图控件安装目录下,例如:D:\Program Files\Bing Maps Silverlight Control\V1\Libraries 4、在MainPage.xaml中添加地图命名空间xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl" 5、在<Grid>域中增加地图元素,如下所示:
<Grid x:Name="LayoutRoot">
<m:Map/> </Grid> 大功告成,可以显示地图了,编译运行一下吧!是不是比JavaScript还简单
不过由于我们还没有用到Bing Maps Key(参见必应地图SilverLight控件入门讲座之准备工作),所以在操作地图的时候你会发现如下提示:
因此在MainPage,xaml中稍微修改一下:
<m:Map CredentialsProvider="Your Bing Maps Key" />
好了,第一讲完成了。
必应地图SilverLight控件入门讲座之准备工作微软必应地图SilverLight控件(Bing Maps SilverLight Control)推出以后,我一直想写一个入门讲座系列。我坚定的以为小康型互联网时代,SilverLight(或Flash,甚至HTML5等等,whatever)将大有作为。并且确实有不少朋友问起如何开发基于必应地图SilverLight控件的应用,所以将我所掌握的资料整理一下,以尽量简单的方式呈现。
照例,开发基于必应地图SilverLight控件的应用需要如下准备工作:
至此,您可以进入下一讲,开发第一个必应地图SilverLight控件例子。 补充说明一下开发者账号的创建步骤:
后面的讲座中我会说明如何使用Key。 November 20 中国必应地图发布更新November 19 必应地图案例分析:欧洲环境署eye on earth有日子没写案例分析了,该为大家介绍一些国外的应用。其实我的博客除了介绍必应地图的相关知识,也不时的将国外一些很有意思的应用引进来,毕竟应用不完全依赖于技术。这些应用的思路完全可以被我们借鉴。今天介绍的是欧洲环境署的eye on earth,可以理解为放眼看地球。
人类的活动对自然造成了不可估量的影响,因此有必要对自然的变化进行有效的监控,并且然公众们了解自然现状。欧洲环境署采用微软的Azure云计算平台和SQL Server数据库,结合最新推出的必应地图SilverLight控件,将空气和水的质量状况实时展示给每一位公民。
欧洲环境署在欧洲拥有成千上万个自然环境监测站,实时采集各种自然数据。通过微软SQL Server存储、处理及分析,对当前自然条件进行评价。网站给出了两类评价结果,空气质量和水质量。同时,评价结果也分官方监测结果和用户上传评价结果。空气质量包括空气中臭氧含量、二氧化氮含量、悬浮颗粒含量等指标。用户也可以拖拽图钉到欧洲任何地方,查看当地的空气和水质量。
应该说这个应用看起来不是很复杂,但是非常有用。首先它提供了交互性的界面,充分利用了必应地图SilverLight控件的优点,使互联网应用更加生动。其次,这种实时监控数据显示的方式,我们完全可以实行拿来主义,比如我们在收音机离每天听到诸如空气指数,洗车指数等等,完全可以在网站上实时展示,并发挥web 2.0的精髓,发挥网民的力量来递交各种数据。 November 17 必应地图更新使用条款,教育和非盈利机构可以免费使用随着本次必应地图(Bing Maps) SilverLight控件1.0的发布,微软也对原有的使用条款(terms of use )进行了修改,使之更容易理解,更容易入门。
微软原有的License Model中,针对Public Application根据Transaction数收费。一个Transaction是指一个地理编码(geocoding)请求/响应,一个路径请求/响应(如自驾路线、公交路线查询),一个本地搜索请求/响应,或请求8个地图瓦片(Tile,256x256像素)。Transaction在无状态(Stateless)API的情况下仍然有用,但是微软将补充引入Session的概念。Session在必应地图JavaScript控件和SilverLight控件中都适用。一个Session是指一个完整的地图访问访问,没有Tile数目的限制。以下是关于Session的详细解释
在了解了这些术语后,我们来看一下使用条款的具体内容。新的使用条款允许每年免费使用12.5万个Session或50万个Transaction,这对于一般的个人地图应用已经足够了。当然,如果你希望获得更多的地图请求以支持企业级应用,请访问微软Marketing page。微软提供了灵活的License Model。此外,关于traffic和鸟瞰图(Bird‘s Eye)也有一些补充限制,请阅读完整的Terms of Use 。 Educators - 针对教育机构,现在可以无限制的使用必应地图。以下内容摘自使用条款:educational use under this Section 2(i) means use by public and private K-12 schools, universities, community colleges and other collegiate level institutions such as vocational schools, trade schools and career colleges, including their faculty, staff, and students。基本上包含了中学、大学、研究所、职高等各种教育性机构。关于教育机构使用条款的权利和约束,请访问Terms of Use。 Not-for-Profits - 非营利机构可以无限制使用必应地图。以下摘自使用条款:to be considered non-profit organization use under this Section 2(i) you must be a tax exempt organization。关于非盈利机构使用条款的权利和约束,请访问Terms of Use。 Commercial, non-commercial and government – 对于企业内部应用、导航定位类应用以及政府应用,需要额外得到微软授权。当然在商业、非商业项目以及政府项目还没有正式上线使用之前,微软提供免费试用期以供开发、测试。 如果您还有问题或者并不了解你的应用所属分类,请访问 new licensing page。 微软在英国推出必应地图今天心血来潮上百度搜了一下“必应地图”,发现前十个结果中居然有两条关于微软在英国推出正式版必应搜索引擎及必应地图:“据国外媒体报道。。。”。我还是来个国内版的吧
其实之前英国的用户访问微软地图服务,将会跳转到MultiMap.com主页。事实上MultiMap在英国还是很强大的,有点相当于中国的MapABC,只不过MultiMap还做全球地图生意。自从微软收购MultiMap以后,就一直忙着整合必应地图和MultiMap地图。现在终于有结果了,在英国访问必应地图(http://maps.bing.com/?mkt=en-uk),你会发现地图数据来自MultiMap,但是引擎采用了最新的Bing Maps SilverLight Control。具体内容我就不完整介绍了,感兴趣的同学自己通过上面的链接体验吧。和必应地图其他国家不同的是,英国必应地图提供了另外几种道路图模式:
London Street Map:更详细的伦敦道路图
Ordnance Survey Map:一直没能整明白这个地图是干嘛的。查了一下Ordnance Survey貌似是英国陆军测量局。
不过我还是很喜欢英国必应地图的卫星照片和航拍照片,清晰度相当的高,应该能够达到0.3米,口水。啥时候能在中国提供这么高精度的图片呢?
November 11 微软发布必应地图SilverLight控件1.0经过数月的CTP预览版本,微软终于发布必应地图SilverLight 1.0版(Bing Maps Silverlight Control Version 1.0)。关于必应地图SilverLight版的好处我就不多费口舌了,总之就是通过RIA(Rich Internet Application)创造下一代LBS位置服务应用。还是直接进入主题,看看必应地图SilverLight控件1.0都有什么内容。
<object id='slCtl' data="data:application/x-silverlight,"type="application/x-silverlight-2" width="800" height="500"> <param name="source" value="http://dev.virtualearth.net/silverlight/mapcontrol/v1/Microsoft.Maps.MapControl.xap" /> <param name="enableHtmlAccess" value="true" /> <param name="initParams" value="ApplicationId=Your Key”/> </object> Bing Maps Silverlight SDK支持的描述性feature如下
Set Animation
Set Map View (rectangle, center point, map mode)
Set Culture (localized maps)
Set Visibility of the scale bar
Capture user targets (rectangle, center point, zoom level)
Location (coordinates)
Add Pushpins
Capturing Events (mouse, keyboard, Bing Maps)
Drawing
(Silverlight) http://dev.virtualearth.net/embeddedMap/v1/silverlight/aerial?zoomLevel=10¢er=47.5_-122.5&pushpins=47.5_-122.5
(AJAX) http://dev.virtualearth.net/embeddedMap/v1/AJAX/aerial?zoomLevel=10¢er=47.5_-122.5&pushpins=47.5_-122.5
嵌入式地图支持如下feature:
Map Mode: Set the map mode. mapMode={Road, Aerial, AerialWithLabels, Birdseye, BirdseyeWithLabels}
Zoom Level: Set the map zoom level: zoomLevel={1-21}
Center: Set the map center point: center={latitude_longitude}
Heading: Set the map heading: heading:{North, South, East, West}
Pushpins: Places pushpins on the map: pushpins={latitude_longitude}
Culture: Set the map localization: culture={en-us}
我们还修改了使用条款(Terms of Use),详情参见Chris的Blog: "Bing Maps Terms of Use Changes; Benefit Educators, Not-for-Profits and Developers." 以下是一些有用的资源: 必应地图Silverlight控件下载(.dlls 在.msi包中) 另外可以看一个必应地图SilverLight控件视频(the video about what the Bing Maps Silverlight Control) 必应地图华丽更新本来我想把标题取的更华丽一些,比如“必应地图革命性的升级”之类的。但是,这次更新离我想象中的还有些距离,至少我之前看到的内部版不完全是这样的,因此姑且算是个过渡版本吧,期待更完美必应地图
不过无论如何,这次升级动作比较大,整体界面风格和之前的版本有了彻底的变化。主要的更新包括以下内容:
November 10 必应地图2.0!今天,必应地图发布2.0版本,将会有很大变化。敬请关注http://maps.bing.com/ 。
我会带来详细介绍。
November 05 必应地图和SilverLight这几天RIA(Rich Internet Application)这个词总不期而遇,想了想万事都有其存在的道理。就好比当许多人还在为第一套房奋斗的时候,一部分人在考虑提高生活质量,比如低密度、高绿化率以及温泉、菜园等外在条件。互联网应用也不例外,当我们通过技术解决了很多基本社会生活需求的时候,我们忍不住考虑一下建设小康型互联网。于是有了Flash,有了SilverLight,有了HTML5。犹如贫困的生活不代表爱情的真谛,朴素的软件界面不代表政府工作的严肃性,为什么我们就不能让工作变得更有意思一些呢。
传统的在线地图几乎千篇一律的采用了JavaScript控件形式,我们必须承认这种革新确实给开发带来了很大的便捷,使普通开发人员不需要拥有GIS背景知识也可以开发一些简单的LBS应用。当微软给出了在线交互式SDK以后,程序开发就变得更简单了,仅需要拷贝、粘贴、替换一些参数。案例、效果、代码一条龙
当微软今年3月推出必应地图SilverLight控件(Bing Maps SL Control)时,当时并没有太大的感触,并且觉得舍弃了三维模型比较可惜(也许将来Bing Maps SL会加上)。但是,随着SilverLight技术的不断发展以及国内开发人员对SilverLight越来越熟悉,基于SilverLight的地图应用也越来越广泛,其中有几个网站给我留下了比较深刻的印象。
1、IDV Solutions,DOD Collaborative GIS
IDV Solutions是微软全球金牌合作伙伴,为必应地图开发了很多解决方案。上图展示的就是IDV其中一个项目DOD Collaborative GIS,国防部协作GIS平台。当发生突发事件时(恐怖分子劫持人质、火宅、交通事故等等),相关部门可以在线协同作战,在必应地图上进行作战方案研究,模拟事故现场,模拟兵力部署,模拟进攻路线等等。必应地图提供的高清晰卫星图可以清楚的展示事件现场的地理形势,而SilverLight提供了良好的页面交互性。用户可以很方便的将各种对象,如飞机、卡车、人员、建筑等,拖拽到地图上。
可以想象,假如配备了这套系统,结合实时视频数据,2008年春节雪灾时温总理就不用亲临现场了,只需要将各部门召集在一起进行网络部署,调动一切可调动的人力物力,制定救灾方案。
2、微软MSN Travel Guide
前一篇文章中已经介绍过微软亚洲研究院开发的旅游指南(Travel Guide),此处重新提出这项应用一方面是因为它很好的结合了必应地图、必应搜索以及SilverLight,另一方面它的思路比较符合我的想法。我一直认为搜索不应当仅仅是上百度或Google查一下某个关键字,然后得到一些网页链接。当温饱型搜索实现以后,我们应该追求小康型搜索。我理解的小康型搜索应该比垂直搜索更进一步,将不同的垂直信息有效整合形成新的解决方案,满足某一类型的需求,比如旅游指南。
Travel Guide做了一个很有益的尝试,如果有一天有人一想到要去旅游首先上Travel Guide搜一下,那时候才是Travel Guide真正成功了。目前看来还有很大一段路要走。一方面,还可以从游客的角度去考虑,一般旅游之前都希望获得哪些信息,需要做什么准备工作等等。另外一方面,在展示方面可以做的更好,比如微软还有PhotoSynth,可以对照片进行智能分析,显示景点全貌;微软有TrueSpace,可以进行三维建模;微软有强大的合作伙伴群体,为微软提供丰富准确的数据,以及与旅游相关的后续服务,诸如酒店预订、机票预订等等。
3、气候管理系统
最近听的另一个比较多的词汇是“数据可视化”。我说朴素的界面不代表政府工作的严肃性,汇报工作不一定只靠格式化的文档和枯燥的数据。采用必应地图,可以使工作更轻松,更有意思,更有效率。这个“气候管理系统”充分利用必应地图和SilverLight的优点,将“数据可视化”理念发挥到极致。这个系统采用了现在比较流行mashup概念,即将不同数据层在基础地图上叠加,比如风图、云图、水量图、雨量图等等。小小的预测一下,这种形式的气候管理系统将成为一个里程碑,成为行业的示范性项目。 微软必应地图赞助Navteq 2010年LBS全球大赛 想挑战吗?有很好的创意?想赢得数十万奖金吗?来参加Navteq的2010年LBS全球大奖赛吧!微软必应地图首次赞助此项赛事。任何对LBS位置业务、移动和互联网有热情的开发人员都可以参与这次盛事,并有机会赢取全球知名公司的投资。你就是下一个LiveCast, Skyhook Wireless 或 Navman – 之前的获奖项目。什么是NAVTEQ LBS Challenge?以下文字摘自NAVTEQ的原文:the NAVTEQ Global LBS Challenge focused on driving the development and visibility of innovative location-based solutions (LBS) for wireless devices. The Global LBS Challenge has become the premier event in the wireless industry and a global symbol of LBS innovation and opportunity. From business applications to sports, travel and security, integrating the accuracy and richness of NAVTEQ digital map data facilitates the discovery of the next wave of LBS using dynamic positioning technology.
NAVTEQ Global LBS大奖赛重点关注无线设备上具有创新性的LBS应用,从体育、旅游到安全等各个领域,结合Navteq丰富准确的地图数据,探索下一代LBS业务。
EMEA - February 14, 2010 – Barcelona, Spain – Mobile World Congress North America – March 30, 2010 – San Jose, USA – Where 2.0 India – April 29, 2010 – New Delhi, India South America – May 25, 2010 – Sao Paolo, Brazil – Geo Summit Asia – June 14, 2010 – Singapore - CommunicAsia 大赛注册地址:http://www.nn4d.com/site/global/market/lbs_challenge/p_lbs_home.jsp。亚洲地区的注册截止日期为2010年3月5日,请大家抓紧时间。 更多关于此次LBS Challenge,请关注微软主页。 October 29 在必应地图SilverLight控件中加载其他地图(Google卫星图等)Tips:在必应地图SilverLight控件(Bing Maps SilverLight Map Control)加载别的地图,例如Google卫星图,Yahoo地图等。
最近一年时不时的考虑微软和Google孰优孰劣的问题,前天的MSN签名也换成Enterprise Microsoft vs Consumer Google,基本上代表了自己的结论。总的来说,两者都是很伟大的公司,伟大的不仅仅是其所拥有的产品和技术这么简单,而是Microsoft和Google所代表的背后所蕴含的人、技术、文化、生态链、对社会的影响等等。相比之下,微软是以做企业客户的思路来经营市场,而Google更像是一个互联网公司,并且更贴近终端用户。因此,Google赢得了更多的口碑。但是现在认为谁更有前途为之尚早,因为到了微软、Google这样级别的企业,影响其成败的不仅仅是产品、技术、用户,而且还有其背后的投资者。
引言这么长一段,小而言之,微软必应地图和谷歌地图这两个全球最有影响力的在线地图,各自都有其优势。例如在中国,Google提供了分辨率还算不错的卫星地图(之所以说还算不错是因为微软在国外提供的卫星地图分辨率最高能够达到0.35米,Google在国内提供的最高分辨率1米),而微软因为某些原因一直没有在国内的必应地图平台上提供卫星地图。但是微软在全球推出了SilverLight地图控件,得到了很多用户的推崇。于是有很多用户,包括我在内,曾经考虑过能否在微软必应地图SilverLight控件中既能够显示全球地图,又能够显示中国道路图,并且最好还能够显示Google卫星地图。本文的目的就是为了实现这个目标。
照例是准备工作,想理解这篇文章的内容,需要先理解前面几篇文章,至少也得多少明白SilverLight地图控件的开发:
1)https://sharepoint.connect.microsoft.com/silverlightmapcontrolctp/iSDK/default.htm 必应地图SilverLight在线交互式SDK 2)http://acnchen.spaces.live.com/blog/cns!9321DA57338F36BA!3231.entry 必应地图SilverLight控件的一些参考3)http://acnchen.spaces.live.com/blog/cns!9321DA57338F36BA!3241.entry 必应地图SilverLight控件开发入门
4)http://acnchen.spaces.live.com/blog/cns!9321DA57338F36BA!3428.entry 必应地图Tile System原理及加载自定义图层
5)http://acnchen.spaces.live.com/blog/cns!9321DA57338F36BA!3430.entry 通过必应地图SilverLight控件加载中国地图
理解了第5)篇文章,我们知道在必应地图SilverLight控件上加载别的地图,无非是指定一个目标地图为自定义图层。我们来简单复习一下如何在必应地图SilverLight控件上加载必应中国地图。其基本步骤大致如下:
1、创建一个MapTileLayer对象的实例
2、创建一个Tile Source对象的实例
3、将Tile Source对象实例添加到MapTileLayer实例中
4、将MapTileLayer实例添加到Map
同学们可能注意到,在那篇文章中我主要修改了必应地图SilverLight控件官方给出例子中的tileSourceUri,即:
UriBuilder tileSourceUri = new UriBuilder("http://r3.tiles.ditu.live.com/tiles/{0}.png?g=47");
这段代码的主要作用就是将必应地图图片的URL转换成SilverLight控件所识别Tile Source Uri格式。
其实从本质上来讲,动态的将在线地图图片作为自定义图层加载在必应地图上,其实就是向在线地图发出http request下载图片,然后在客户端做叠加。因此,我们需要考虑的是如何构造这个http request。对于必应地图SilverLight控件应用客户端而言,能够获得的是x、y坐标值及当前放大级别z(zoom level)。
那么我们怎么知道Google卫星地图的url格式呢?万能的httpWatch再次登上舞台,轻而易举的我们就可以分析出其格式如下:
剩下的工作就简单了,重载一下Tile Source对象,申明一个GoogleTileSource类:
public class GoogleTileSource : TileSource
{ public GoogleTileSource() : base("http://khm{0}.google.com/kh/v=47&x={1}&y={2}&z={3}") { } public override Uri GetUri(int x, int y, int zoomLevel)
{ return new Uri(string.Format(this.UriFormat, x % 4, x, y, zoomLevel)); } } 然后按照前面所述的四个步骤添加自定义图层:
public MapTileLayer customTileLayer = new MapTileLayer(); //create a MapTileLayer object instance
public GoogleTileSource gTileSource = new GoogleTileSource(); //create a Tile Source object instance customTileLayer.TileSources.Add(gTileSource); //add tile source to MapTileLayer
myMap.Children.Add(customTileLayer); //add MapTileLayer to Map 这样,我们就可以在必应地图SilverLight控件中叠加显示Google卫星图片了。当然你也可以增加两个按钮,分别控制显示必应地图中文道路图和Google卫星地图。下面附两张demo的截图,显示OpenStreetMap提供的双语道路图,以及Google的卫星地图:
微软必应地图数据更新10月27日,微软必应地图(Bing Maps Global)再次更新了大量地图数据,总计约65TB。此次更新主要集中在爱尔兰、斯堪的纳维亚地区以及珠穆朗玛峰等地。中国区域更新的城市(卫星地图)包括:
内蒙古牙克石市(又是第一次听说的地名),326平方公里;
辽宁锦西,2299平方公里;
山西云冈,1573平方公里;
山东济南,647平方公里;
山西渭南(骊山),591平方公里;
安徽淮南,620平方公里;
江苏江阴,386平方公里;
江苏崇明,349平方公里;
福建漳州,675平方公里;
福建南平,3641平方公里;
登陆http://bingmapsupdates.cloudapp.net/可以查看微软必应地图全球数据更新的情况。 October 13 通过必应地图SilverLight控件显示中国地图鉴于很多朋友问起来如何通过必应地图SilverLight控件(Virtual Earth SilverLight Control,VESL)显示中国地图,我还是简单写一下吧。既要避免违反公司规定,又要让更多的用户使用必应地图,还真是有些矛盾。我继续以地图爱好者的身份,从公开能够获得的参考资料中分析如何实现这一解决方案吧。
以下是一些准备工作,大家可以预习或复习一下。
1)https://sharepoint.connect.microsoft.com/silverlightmapcontrolctp/iSDK/default.htm 必应地图SilverLight在线交互式SDK 2)http://acnchen.spaces.live.com/blog/cns!9321DA57338F36BA!3231.entry 必应地图SilverLight控件的一些参考3)http://acnchen.spaces.live.com/blog/cns!9321DA57338F36BA!3241.entry 必应地图SilverLight控件开发入门
4)http://acnchen.spaces.live.com/blog/cns!9321DA57338F36BA!3428.entry 必应地图Tile System原理及加载自定义图层
其实,通过必应地图SilverLight控件显示中国地图并没有想象的那么困难,我们先看一下1)交互式SDK中所介绍的一个例子,User Tile Layers-->Add a tile layer using C#。这个例子告诉我们如何将用户自定义图层通过VESL叠加显示在上基础地图上,看到这句话是不是觉得很熟悉?这就是文章4)中所介绍的内容,其原理和本文所要介绍的是一致的。因此,我们直接分析VESL的这个例子代码:
public TutorialAddTileSourceManaged()
{ InitializeComponent(); UriBuilder tileSourceUri = new UriBuilder("http://dev.live.com/virtualearth/sdk/layers/lidar/{0}.png");
if (HtmlPage.Document.DocumentUri.Scheme.Equals(Uri.UriSchemeHttps)) { //For https, change the UriSceheme to https and change it to use the default https port. tileSourceUri.Scheme = Uri.UriSchemeHttps; tileSourceUri.Port = -1; }
tileLayer = new MapTileLayer();
LocationRectTileSource tileSource = new LocationRectTileSource( tileSourceUri.Uri.ToString(), new LocationRect(new Location(48.06282, -122.43773), new Location(47.999973, -122.37490)), new Range<double>(10, 16)); tileLayer.TileSources.Add(tileSource); tileLayer.TileWidth = 256; tileLayer.TileHeight = 256; } 这段代码中我们所需要关心的就是UriBuilder tileSourceUri = new UriBuilder("http://dev.live.com/virtualearth/sdk/layers/lidar/{0}.png");这句代码实现的功能就是初始化自定义图层的Tile Source URL,和4)中所提到的Tile Source基本一个意思。因此,还是老办法,我们用httpWatch。用httpWatch分析任何一个必应地图(中国平台)的例子,发现获取地图tile的URL格式大致如下: 于是,依样画葫芦,把那段代码改成:UriBuilder tileSourceUri = new UriBuilder("http://r3.tiles.ditu.live.com/tiles/{0}.png?g=47");
然后初始化tileSource:
LocationRectTileSource tileSource = new LocationRectTileSource(
tileSourceUri.Uri.ToString(), new LocationRect(new Location(60, 60), new Location(13, 140)), //设置显示叠加图片的区域,随便取两个值把中国区域覆盖 new Range<double>(2, 16)); //设置在哪个地图放大级别显示叠加图片
我要说的是,我们已经可以通过必应地图SilverLight控件显示中国地图了,大家去试一下吧。还是那句话: 需要注意的是,微软并不推荐本文所描述的解决方案,即直接访问tile system。因为微软可能随时更换服务器路径。
另外:大家如果开发了基于SilverLight的地图应用,记得和我联系acnchen@hotmail.com。我希望让微软总部知道中国有很多用户对SilverLight地图控件很感兴趣,这样他们就会考虑直接把中国地图加入产品中,而不需要我们额外做这些工作了。 October 12 在必应地图上加载卫星地图无数次,我不得不向客户解释为什么微软必应地图的中国平台(http://ditu.bing.com)没有卫星地图而全球平台(http://maps.bing.com)有,为什么Google的地图有。其实原因很简单,中国地图相关法律没有明文规定在中国可以发布卫星地图。我常常给大家讲一个逻辑,那就是在中国我们只可以做法律允许的事情,而在国外我们可以做法律没有规定不让做的事情。微软是一个比较保守的公司,因此我们谨慎的遵循国家的法律法规行事。
当然,这篇文章归类于“开发入门”,显然不是为了解释上面的内容。我在这篇文章中介绍如何将必应地图全球平台上的卫星地图叠加显示在中国地图平台上。下面是几篇参考性文章,有助于我们实现本文所需的解决方案:
1)http://msdn.microsoft.com/en-us/library/bb429629.aspx,介绍如何在必应地图上叠加用户自定义图层;
2)http://msdn.microsoft.com/en-us/library/bb544970.aspx,介绍VETileSourceSpecification类的tile source属性的用法,非常重要
3)http://msdn.microsoft.com/en-us/library/bb545006.aspx,进一步介绍必应地图的tile system,我们需要把Bing Maps的卫星地图作为自定义图层叠加在必应地图中国平台上;
4)最后是一个小工具,即httpWatch。
需要注意的是,微软并不推荐本文所描述的解决方案,即直接访问tile system。因为微软可能随时更换服务器路径。
鉴于公司制度,我尽量把微软所公开的资料总结整理一下,以一个地图爱好者的角度探讨本文的解决方案,而避免泄露一些核心的内容。
接下来我们循序渐进分析一下如何在必应地图上加载卫星地图。这里首先用到一个方法:VEMap.AddTileLayer(layerSource, visibleOnLoad);
这个方法很简单,也很容易理解,关键在于其中的layerSource这个输入参数,它是一个VETileSourceSpecification 类,而这个类的一个最重要的属性TileSource,用来指定自定义图片的来源。我们所需要做的就是将卫星地图作为TileSource。
接下来我们使用httpWatch这个小工具,分析任何一个必应地图(访问全球平台)的小例子,发现必应地图卫星图片的请求URL格式大致如下:
回到参考文章2)及3),
TileSource - The tile source contains a URL that points to the servers that are going to host the tiles. There are three place holder variables within this URL.
如果你觉得很难理解上面那段英文的话,那么我告诉你,在将Bing Maps的卫星照片设为自定义图层TileSource时,只需要下面的一段代码: var tileSourceSpec = new VETileSourceSpecification("china", "http://t0.tiles.virtualearth.net/tiles/a%4.png?g=213"); 或者: var tileSourceSpec = new VETileSourceSpecification("china", "http://t%2.tiles.virtualearth.net/tiles/a%4.png?g=213"); 这种形式支持访问多个地图服务器。 上面那段代码中,a%4.png,其中a表示卫星图片(aerial的首字母),当你想调用道路图的时候可以将a改为r。 到此为止,我们已经可以将Bing Maps上的卫星图片叠加在Bing Ditu上了。代码如下: function GetTiles() var tileSourceSpec = new VETileSourceSpecification("china", "http://t%2.tiles.virtualearth.net/tiles/a%4.png?g=213"); map.AddTileLayer(tileSourceSpec, true); 完整代码我就不写了,能够看懂这篇文章的朋友想必对必应地图早有研究,应该知道怎么实现。
看到这儿,有悟性的朋友已经开始琢磨,这种办法完全可以应用到微软的必应地图SilverLight Map Control中。由于必应地图SilverLight Control只能显示英文地图,因此我们可以采用本文中的解决方案,将必应地图中文道路图片叠加显示在英文地图上。就当家庭作业布置给大家吧,过几天我再公布答案。 October 07 必应地图图片系统(Tile System)之二【坐标系和地图图片编码】
为了优化地图系统性能,提高地图下载和显示速度,所有地图都被分割成256 x 256像素大小的正方形小块。由于在每个放大级别下的像素数量都不一样,因此地图图片(Tile)的数量也不一样:
必应地图图片系统(Tile System)之一微软必应地图提供了全球地图,用户可以进行平移、放大或缩小操作。但是我们可曾考虑过,地图系统的后台是怎么工作的?在进行地图操作的时候,我们会发现并不是整个地图一次性加载显示的,而是一块块的小地图分别显示。没错,为了使地图的浏览速度更快,地图交互更流畅,目前包括微软必应地图在内的几乎所有在线电子地图都事先对地图图片(Tile)进行预处理。本文主要描述地图映射、坐标系以及地图Tile编码体系,统称为必应地图图片系统(Bing Maps Tile System)。
【地图映射】
为了使地图看起来是无缝(Seamless)的,并且确保来自不同数据源的卫星照片能够完美的拼接,必须有一个统一的地图映射系统,这就是必应地图所采用的墨卡托映射(Mercator Projection)。在上一篇文章中我们已经简单介绍了Mercator Projection。通过Mercator Projection,整个地球可以展示为如下平面地图:
尽管Mercator Projection会使地球比例尺和某些区域变形,尤其在两极,它还是有不可磨灭的贡献的:
1)首先它是共形映射(Conformal Projection),即保留了物体的原有形状。这在展示卫星照片的时候很重要,因为我们所看到的正方形建筑就应该是正方形的,而不是长方形的。
2)其次它是柱状体映射,即南北极在地图的正下、上方,而东西方向处于地图的正右、左。
由于Mercator Projection在两极附近是趋于无限值得,因此它并没完整展现了整个世界,地图上最高纬度是85.05度。为了简化计算,我们采用球形映射,而不是椭球体形状。虽然采用Mercator Projection只是为了方便展示地图,需要知道的是,这种映射会给Y轴方向带来0.33%的误差。
【精度和比例尺】
为了准确显示地图,除了地图映射我们还需要指定地图精度或者比例尺。在最低地图放大级别(1级),地图是512 x 512像素。每下一个放大级别,地图的高度和宽度分别乘于2:2级是1024 x 1024像素,3级是2048 x 2048像素,4级是4096 x 4096像素,等等。通常而言,地图的宽度和高度可以由以下式子计算得到:
map width = map height = 256 * 2^level pixels 地图精度表示屏幕上每个像素所代表的实际距离,例如精度为10m,表示每个像素代表10m的距离。在每个放大级别(Xoom Level)和不同纬度下,地图的精度都是不同的。假设地球直径为6378137米,地图精度(米/像素)可以由如下式子计算得到
October 06 理解地图的比例和精度国庆赋闲在家,顺手看看几篇文章,拿来翻译并和大家分享一下。今天主要聊聊地图上的比例尺和经纬度。其实我曾经也有这样的问题,我们常常提起说必应地图(Bing Maps)提供的北京地区卫星图片的精度是1m,这到底意味着什么?我们在地图右下角经常看见一个比例尺,又代表什么意思?
我们都知道地球是圆的,确切的说还不是一个规则的全球,而我们每天看的电子地图包括纸质地图是平面的。为了方便,我们必须牺牲一定的精确性,将不规则球体映射成平面,这就是我们现在所看到的最常用的墨卡托映射(Mercator Projection),包括必应地图在内的几乎所有的电子地图都采用Mercator projection。采用Mercator projection的好处就是,假设我们在海上航行,按照罗盘的指示一直往前走,对应在平面地图上也是一条直线,虽然实际上在球体上走的是一个空间曲线。
当然Mercator Projection也会有问题,因为它采用平行的经线和纬线,这意味着经线或纬线上的一度对应的距离是相等的。但是在地球体上,赤道和两极上一度的距离显然是不等的。采用Mercator Projection的好处是它令我们可以更容易绘制和理解地图。
【如何计算分辨率】
地图的分辨率是由纬度、放大级别和常量组成的一个等式。在任何纬度和放大级别,地图精度可以由以下等式表示: Map resolution = 156543.04 meters/pixel * cos(latitude) / (2 ^ zoomlevel) 此处zoomlevel值为1至19之间的整数,latitude为-90至+90。距离两极越近,这个等式的误差越大。这正是Mercator Projection所带来的问题。从这个等式,我们大概可以计算每个放大级别下,屏幕上每个像素所代表的距离比例(赤道上): 需要注意的是,在不同的纬度下,上图的比例是会发生变化的。例如在加拿大多伦多(Toronto,维度43.65),地图放大级别为13,地图精度约为19.11 * cos(43.65)或13.8 meters/pixel。 【如何计算比例尺】 大多数时候,我们更关注地图比例尺,因为我们比较习惯于固定比例的地图,例如1:5000,即地图上1厘米对应地球上50米。为了计算比例尺,你需要知道屏幕分辨率、地图放大级别,以及维度值。并且,我们假设屏幕的分辨率是固定的,在x和y坐标方向是相等的。比例尺计算等式如下: Map scale = 1 : (ScreenRes pixels/inch * 39.37 inches/meter * 156543.04 meters/pixel * cos(latitude) / (2 ^ zoomlevel)) 例如,假设屏幕的分辨率为85/英寸,地图放大级别为13,你可以得到比例尺为1 : 85 * 39.37 * 19.11或1 : 63950。 虽然大多数时候我们不需要自己计算比例尺或地图精度,因为这通常由微软必应地图在后台完成。但是当你在做某些应用开发时可能需要考虑,比如汽车导航或计算距离。 September 24 必应地图讲座webcast微软会不定期的组织必应地图的在线讲座,介绍一些开发入门、不同行业的解决方案,甚至一些合作伙伴的demo等等。遗憾的是整个讲座都是英文的,并且通常时间都安排在回笼觉之前。不过反正是免费的,就当是练习英语听力了,顺便看图说话一下,七七八八的也能猜个大概。
下面是讲座的通告,又可以练习阅读理解了
On October 8, 2009 - the Bing Maps for Enterprise team is conducting a Level 100 webcast focused on Bing Maps as a visualization tool for SharePoint content:
Momentum Webcast: Use Bing Maps with SharePoint Server for a Better View of Your Business
Chris Pendleton will deliver this webcast with Microsoft partners - IDV Solutions, SpeakTech, and Habanero Consulting – who will demonstrate how they have integrated SharePoint and Bing Maps to deliver compelling solutions for their customers.
Please see the attached invitation for you to send to customers & prospects. We would like to invite business and technical decision makers to attend the webcast, showing the benefits of bringing business intelligence to life using Bing Maps with Sharepoint.
The webcast occurs less than two weeks before the upcoming Microsoft SharePoint Conference 2009 (10/19-22, Las Vegas). Chris Pendleton & Eric Waldman are conducting a Bing Maps session at this conference. As a prelude, please encourage your customers to register for this October 8th webcast.
· Yes, this webcast will be available on demand post 10/8 (same link as above) · Yes, the Sharepoint product team is promoting this webcast on their home page under ‘Featured News’. · www.microsoft.com/maps home page has a direct link to register for this webcast
Please let me know if you have further questions. 以上洋文大致可以翻译为:不参加这次讲座,人生就不完整了。 September 22 必应地图(Bing Maps)一些有意思的应用最近看到了一些很有意思的应用,都是基于微软必应地图(Bing Maps)的,和大家分享一下。
1)微软亚洲研究院开发的旅游指南(http://travel.msra.cn/)
这个网站采用了必应地图(Bing Maps)、必应搜索和SilverLight技术,且不说内容如何,界面就非常简洁清新。用户可以根据地点、时间搜索当地的旅游景点,美食小吃,游记攻略,旅游路线,以及酒店预订、车票预订等等。该网站目前还处于测试阶段,值得期待。
2)MapStack(http://www.web-demographics.com:8089/MapLens/)
该网站也是采用了必应地图(Bing Maps)和SilverLight技术,实现了放大镜效果。当用户移动放大镜时,该地区自动放大显示。而且该网站还可以让用户选择叠加不同的地图数据,这对我们开发别的行业应用很有启发。可以在必应地图上显示铁路路网图,河流水文图,甚至历史地图等等。
3)Drawing by SoulSolutions(http://drawing.soulsolutions.com.au/)
这个网站内容很简单,给大家提供了一个很有意思的画多边形区域和折线的方法,大家可以借鉴一下。
4)GeoDemo by SoulSolutions(http://www.minus34.com/geodemo/)
|
|
|