uniapp中的APP开发使用开源地图的困难之处在于的APP端不支持document、window等对象的API,而开源地图的实例化又是需要通过dom获取到节点进行地图的创建,因此正常的uniapp开发是无法使用开源地图的,需要另辟蹊径。
查阅相关资料,列举出了以下几种来解决移动端使用开源地图开发的方法,并就其使用方法以及可行性进行说明。
==uni-app 中,没有 document!!!==
方式一
使用uniapp中的renderjs进行开发
https://uniapp.dcloud.net.cn/frame?id=renderjs
renderjs是一个运行在视图层的js。它比WXS更加强大。它只支持app-vue和h5。
(WXS是一套运行在视图层的脚本语言,它的特点是运行在视图层。当需要避免逻辑层和渲染层交互通信折损时,可采用wxs。uni-app可以将wxs代码编译到微信小程序、QQ小程序、app-vue、H5上)
renderjs的主要作用有2个:
- 大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力
- 在视图层操作dom,运行for web的js库
- 大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力
逻辑层和视图层分离有很多好处,但也有一个副作用是在造成了两层之间通信阻塞。尤其是小程序和App的Android端阻塞问题影响了高性能应用的制作。
renderjs运行在视图层,可以直接操作视图层的元素,避免通信折损。
- 在视图层操作dom,运行for web的js库 官方不建议在uni-app里操作dom,但如果你不开发小程序,想使用一些操作了dom、window的库,其实可以使用renderjs来解决。
在app-vue环境下,视图层由webview渲染,而renderjs运行在视图层,自然可以操作dom和window。
使用方法
|
|
方式二(不建议)
用 html 5+ 或者 web-view内嵌h5去实现地图
地图为单独的一个webview界面
App端的webview是非常强大的,可以更灵活的控制和拥有更丰富的API。
数据目录那一块的功能要在内嵌的html上写 或者在uniapp弄一个侧边栏
方式三(不建议)
由于目前市面上的app大部分是由原生和H5独立或混合编写,可对原生项目进行改造,实现原生(Android)和uni-app以及html5项目混编,使其能在iOS、Android、H5、小程序等多个平台运行,从而实现跨平台开发。