一种基于ReactNative实现LBS的方法与流程

文档序号:12917668阅读:1020来源:国知局

本发明涉及一种基于reactnative实现lbs的方法,属于移动app开发技术领域。



背景技术:

目前,很多社交、生活服务类的移动端app(应用程序)都使用了lbs(location-basedservice,地理位置服务)。通过借助第三方平台,例如百度地图、高德地图、腾讯地图等,开发者可以有效调用其丰富的api(应用程序编程接口),例如javascriptapi、uriapi等,实现个性化服务。

通常情况下,开发一款移动应用要面向android和ios系统,也就是主流的安卓手机和苹果手机。软件公司需要配置专门的针对不同平台的开发人员,因为两者的开发环境、开发语言、开发工具等差异迥然。具体而言,android系统一般在windows操作系统下,使用androidstudio(或eclipse)开发工具,用java语言编程;ios系统一般在macos(x)操作系统,使用xcode开发工具,用objective-c(或swift)语言编程。所以,平台的差异意味着开发人员需要具备不同的开发技能,软件公司一般也要配置android和ios开发人员。每当应用中增加一个功能或解决一处公共的bug,那么就要同时开发或维护。

如果开发一款同时面向android和ios的位置服务应用,开发人员还需要针对不同平台分别下载sdk,在工程项目中配置环境,调用api实现位置服务功能。由于sdk的封装及调用所使用的语言不同,所以开发周期也相对较长。



技术实现要素:

本发明为了解决跨手机平台的位置服务的技术问题,提供了一种基于reactnative实现lbs的方法。

本发明技术方案如下:

一种基于reactnative实现lbs的方法,具体步骤包括:

步骤a、开发者在reactnative页面中引入兼容android和ios的封装后的网页组件;

步骤b、在reactnative网页组件中编写脚本程序,脚本程序调用第三方平台api,第三方平台api访问终端设备的gps,获取终端设备所在地的经纬度,实现终端设备定位,第三方平台api渲染以定位点为中心的区域地图;

步骤c、建立reactnative与网页组件双向通讯,实现lbs定位功能;

(1)reactnative调用后台数据库获取信息数据,并将信息数据传递至网页组件;

(2)网页组件通过脚本程序调用第三方平台api,脚本程序将得到的信息数据绘制成用户所用的坐标点图标以及信息窗口内容;

(3)用户点击坐标点图标后,网页页面会弹出信息窗口,选择从网页组件返回reactnative,实现lbs定位。

本发明的有益效果:该方法在reactnative框架兼容android和ios平台的良好特性下,使用其提供的网页组件<webview>实现lbs功能,体现出其在项目实践中开发成本小、开发周期短、跨平台、便于维护等优点。

附图说明

图1为本发明一种基于reactnative实现lbs的方法的示意图。

具体实施方式

下面结合附图对本发明作进一步阐述。

如图1所示,一种基于reactnative实现lbs的方法,具体是一种通过facebook公司开源的移动端javascript框架reactnative实现跨手机平台的位置服务的方法,reactnative可以快速部署和开发跨平台app,与原生开发所用地图sdk不同,reactnative在页面中直接引用网页组件<webview>,该网页组件<webview>加载网页,起到类似浏览器的作用,调用第三方平台api(本文以百度地图为例),通过脚本程序渲染页面内容,完成地图渲染、地理定位,以及交互行为,从而实现lbs功能,并且使lbs在reactnative框架下可以敏捷开发和扩展。

具体步骤包括:

步骤a、开发者在reactnative页面中引入了很多常用的兼容android和ios的封装组件,例如视图组件<view>、文本组件<text>、图片组件<image>等,这些组件在每个平台的显示遵循对应的原生风格,并在很大程度上做到了代码重用,即同一份代码只需要稍作修改,就可以在不同平台渲染相同的视图。

其中,开发者在reactnative页面中引入网页组件<webview>。reactnative的网页组件<webview>是兼容android和ios的封装后的网页组件,可以加载html、css、javascript,能够像浏览器一样加载网页,开发者在网页中渲染地图,并尝试开发更丰富的位置服务功能。

步骤b、网页组件<webview>调用百度地图javascriptapi渲染内容。在reactnative网页组件<webview>中编写脚本程序javascript代码,脚本程序调用第三方平台百度地图javascriptapi,第三方平台百度地图javascriptapi访问终端设备的gps,获取终端设备所在地的经纬度,从而实现终端设备定位,第三方平台百度地图javascriptapi渲染以定位点为中心的区域地图(也可以根据需求渲染目标区域及缩放级别)。

javascriptapi目前的版本是2.0,开发者需要以个人开发者身份或者企业用户身份申请密钥,方可使用。两者在服务、并发调用等服务条款有不同的标准,视开发需求而异。申请密钥后,直接在网页的头部引用库文件,并在连接地址中添加密钥参数,即可使用。

步骤c、建立reactnative与网页组件<webview>双向通讯,实现lbs定位。

这一步是实现lbs功能的关键,因为虽然有了地图定位,但应用却没有给用户带来实质性的服务功能,因此在reactnative与网页组件<webview>间需要建立通讯机制,通过交互行为,增强服务体验。通讯机制的建立分为以下三步:

(1)reactnative调用后台数据库获取餐饮、银行或定制化的显示信息数据(例如坐标点经纬度、名称、图片或其它字段),并以发送数据方法postmessage()将信息数据传递至网页组件<webview>。

(2)网页组件<webview>通过脚本程序调用第三方平台百度地图javascriptapi,脚本程序将得到的信息数据绘制成用户所用的坐标点图标以及信息窗口内容。

(3)用户点击坐标点图标后,网页页面会弹出信息窗口,选择点击“导航”或者“详细”按键触发事件,该操作指令从网页组件<webview>返回给reactnative端。reactnative端调用获取数据方法onmessage()接收操作指令,跳转到导航页面或详情页面,从而实现lbs定位。

需要注意的是,reactnative版本<0.37(截至撰文为止,reactnative的最新版本为0.42),需要引用第三方开源组件react-native-webview-bridge,因为在rn早先版本,官方并没有提供网页组件<webview>的通讯方法。<webviewbridge>组件实际上是对网页组件<webview>的再次封装,增加了传递信息的方法。reactnative>=0.37,即在0.37版本中facebook的reactnative团队对<webview>增加了通讯方法,即从rn传递到网页组件<webview>信息的postmessage()方法,rn接收网页组件<webview>信息的onmessage()方法,所以使用该范围的rn版本创建项目时无需再引用react-native-webview-bridge组件了。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1