从别的页面启动外部页面打开地图
百度的很多应用都支持这个功能,比如贴吧、网盘。百度网盘可以通过一个链接,启动手机里的百度网盘app,并直接开始下载链接所指的文件。百度地图也支持在浏览器打开外部应用。
uwp里的实现方式可以通过这里的app之间的数据共享:https://docs.microsoft.com/en-us/windows/uwp/app-to-app/receive-data
首先将自己声明为一个share target,然后监听OnShareTargetActivated事件,接受数据即可。
其他应用就可以向他发送数据,发送对应的坐标信息。https://docs.microsoft.com/en-us/windows/uwp/app-to-app/share-data
基础地图功能
虽然uwp拥有map的功能和组件:
https://docs.microsoft.com/en-us/windows/uwp/maps-and-location/display-maps
https://docs.microsoft.com/en-us/windows/uwp/maps-and-location/display-poi
不过百度肯定不需要用这些东西,还需要微软的appkey。有可能用到的估计就一个获取当前位置了:https://docs.microsoft.com/en-us/windows/uwp/maps-and-location/get-location ,这个是一个API,取到手机的位置信息。
实现基础地图功能,只需要能访问网络:https://docs.microsoft.com/en-us/windows/uwp/networking/networking-basics ,就能访问百度的服务器,请求地图数据,然后用https://docs.microsoft.com/en-us/windows/uwp/composition/composition-visual-tree 上面的Composition visual进行绘图,即可完成。
智能语音服务
百度地图还有个功能,可以识别语音,然后执行相应的指令,并给出回答。比如,你可以说“去东北大学”,地图就会切换到导航模式,并用扬声器告诉你正在查询路线。
这里说得简单点,就是个前端app的事情。用话筒采集语音,用上面提到的网络API访问服务器,再接收处理结果,并用扬声器报告:https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer
说复杂点,语音识别功能可以用https://docs.microsoft.com/en-us/windows/uwp/design/input/speech-recognition 完成,然后用进一步机器学习方法识别成指令https://docs.microsoft.com/en-us/windows/uwp/machine-learning/overview 并执行相应函数。当然,包括语音识别的功能百度都有。
全景地图
全局地图可以让你从道路向四周看,可以很方便地知道周围的情况。
实现方式可以是用DirectX去构建一个模型,然后传输贴图。不过开启DirectX可能有点用牛刀杀鸡的感觉,因为模型很简单,使用OpenCV进行图片变幻模拟出立体感也许是个更好的办法。任何3D渲染其实都只是一个线性变幻,用OpenCV完全可以实现。https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/process-software-bitmaps-with-opencv
离线地图
当没有网络时,可以使用离线地图进行浏览,当然这样的地图看不到路况信息。
这可以使用SQLite来完成:https://docs.microsoft.com/en-us/windows/uwp/data-access/sqlite-databases