微软在2012年6月21日 发布了 Windows Phone 8的更新。带来大量的功能更新和全新的SDK。作为重头戏的部分是引入了 C++ 和 DirectX,支持native code。 这样使得众多C++ 和DirectX 现有代码库可以直接移植到Windows Phone 8 上。
强大的DirectX
我们在新版“高德地图 Windows Phone 8 SDK”使用了DirectX。DirectX给我们地图SDK带来了巨大的改进。对比之前的 Windows Phone 7 栅格版地图,带来了以下改进:
1. 更方便:DirectX 可以使用托管的方式和XAML交互,使得地图可以以一个控件的形式出现。这样便于第三方开发者使用。
2. 更流畅:由于WP8(Windows Phone 8,以下统称)的硬件规格的升级,使用DirectX 可以提供更高的绘制帧数。从而使得地图在运行的过程中显得更加流畅。能给用户提供更加优秀的体验。
3. 更灵活:DirectX 是3D的引擎,因此可以为提供之前栅格地图不能提供的3D效果。实现地图3D话。同时支持旋转角度,更改仰角,让地图“活”起来。如下图
图1. Windows Phone 8 高德地图SDK
4. 更真实:在一定zoom(地图的层级)级别以下,便会出现楼块信息。真实体现了现实情况。如下图
图2. 高德地图Windows Phone 8 版本
易于使用的多线程
与此同时,微软给C++带来了task。task 是用于异步操作的一个类。在地图中我们使用的最多的场景便是异步读取hlsl文件,来完成DirectX 的绘制准备工作。由于读取文件下载等耗时的操作都通过异步来完成,则可以不用让主线程等待其完成,从而达到加快进入地图页面的效果。
图3. 简单的单线程演示
图4. 简单的多线程演示
同内核带来的高代码复用率
微软在带来C++的同时也更新了 Windows Phone 8的内核。使得Windows 8和Windows Phone 8 都为NT内核。这也为代码的复用提供了便利。例如高德地图的街景引擎(如下图)
图5 Windows Phone 8 高德地图 街景
图6. Windows 8高德地图 街景
在街景的开发过程中Windows 8平台上复用了Windows Phone 8的巨大部分代码。稍加修改对C#层的接口便可正常运行。(ps. 在未来的 WP8.1后,Windows Phone 8.1 可以复用几乎所有的 Windows 8.1 的代码)。
简单,便捷的代码复用,为后续的地图移植工作提供很大的帮助。
其他功能
在Windows Phone 8中,微软加入了 SD卡的支持,这方便了我们把地图的离线地图存在SD卡中。不仅方便用户管理(可自行操作SD卡删除地图),还能节省手机本身的存储空间。目前只有Nokia地图的离线数据可以存储在SD卡上。
语音输入作为信息录入的辅助功能,能够为部分使用场景(例如行车导航中语音搜索)提供强大的帮助。在Windows Phone 8中,微软为中文提供了语音识别的功能,增强了中文环境下的地图体验。
据泄露的WP8.1 SDK,新增了地理围栏(Geofence)API,这一API在Win8上已经有了,扩大了基于位置服务应用场景,对LBS类应用有非常大的帮助。
Windows Phone 8.1的发布将更有利于我们地图的开发。
高德地图API for Windows Phone SDK :http://api.amap.com/wp8/index