# iPinCar **Repository Path**: kingdee/i-pin-car ## Basic Information - **Project Name**: iPinCar - **Description**: 基于金蝶云苍穹平台开发出的企业内部员工拼车轻应用 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2023-07-30 - **Last Updated**: 2023-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 苍穹应用, 自定义控件 ## README # 更新记录 | 更新时间 | 更新版本 | 更新人 | | :-------- | :--- | :-- | | 2023.8.25 | V1.0 | chenlaizhen | | | | | # i拼车介绍 ## 需求背景 i拼车是基于金蝶云苍穹开发平台开发的一个移动端轻应用,可以实现上下班拼车等功能,分为 乘客端与司机端 ,由乘客端发起行程,司机端经过注册后可以看到乘客发布的行程,选择自己顺 路的行程选择接单,由乘客确认上车,行程结束后乘客支付完成为司机进行评价。 ## 思路与方案 例如:基于苍穹的自定义控件,使用百度地图jsAPI3.0实现行程信息定位。 乘客端打开时,自动定位(BMap.Geolocation())、然后选择出发地点和终点(弹出搜索页面搜索并维护搜索记录), 根据搜索结果返回到i拼车乘客端页面(kdec_pincar),并通过百度地图接口绘制地图路线。绘制路线成功后在苍穹页面点击一键维护拼车信息然后发布行程 (行程单kdec_pincarbillmob)。 司机端打开时,切换到司机端页签(tabdriver)时直接弹出司机端移动表单布局(kdec_pincar_driver),并由司机进行接单(行程单kdec_pincarbillmob) 乘客点击上车、完成行程等操作。 ## 实现过程 1、启动类对象Launcher中修改domain属性的ip值 set("domain.contextUrl", "http://本机ip:8080/ierp"); 注意:本机ip不能设为localhost 2、在自定义控件中引入百度jsapi 百度地图开放平台https://lbsyun.baidu.com/apiconsole/key#/home BMap的src="//api.map.baidu.com/api?v=3.0&ak=你的密钥" BMapGL的 src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=你的密钥" 注意:BMap和BMapGL的使用区别,这里引入了BMap 2.1 乘客端自定义控件一(控件方案avatar_pincar),var initEvent = function(model,props)初始化地图BMap.Map,并设置中心地点定位到当前位置。 如果起始地点和终点都有数据,则绘制路线drivingDraw(startLngLat, endLngLat); 路线绘制成功时,向苍穹后端发送路线的距离、时间、打车路费等信息model.invoke('drivingDraw',result); 苍穹后端的kd.bos.kdec.pincar.PinCarForMob#customEvent事件监听前端的信息并赋值起始位置标签值 2.2 自定义控件二(控件方案ivatar_search),同样在initEvent事件中监听搜索关键字提示信息,并自动生成搜索关键信息列表,选择具体位置搜索 成功时myFun获取相关的路线信息var local = new BMap.LocalSearch(map, { //智能搜索 onSearchComplete: myFun }); local.search(myValue); 搜索成功时,向苍穹后端发送搜索的位置信息model.invoke('updateData',placeResult); 苍穹后端的kd.bos.kdec.pincar.PinCarForMobSearch#customEvent事件监听前端的信息并记录搜索的详细地址和坐标point等信息。 3、kd.bos.kdec.pincar包下为苍穹后端的插件信息,具体对应关系查看表单注册的插件 4、(1)初始i拼车项目基于苍穹2.0 数据库使用mysql,高德地图jsapi(AMap)。 (2)本次更新为苍穹5.0,数据库基于postgresql,百度地图jsapi(BMap),元数据库从系统库中分离了出来形成了独立的库。 更新了一些sql脚本及苍穹后台插件赋值问题(一般是类型转换错误问题,出问题要查看赋值类型和数据库类型是否对应) ## 运行效果 # 使用方法 1、将附件的cosmic5.0/kdec_ipincar-kdec_pincar_driver-20230824154452和kdec_ipincar-kdec_pincar_passenger-20230824154546并添加到压缩包中, 从mc到导入压缩包 2、将附件中的cosmic5.0/webapp/static-file-service/isv/kdec/cus包下的avatar_pincar和ivatar_search添加到压缩包中, 表单kdec_pincar中的自定义控件上传avatar_pincar的压缩包,表单kdec_searchplace自定义控件上传ivatar_search的 压缩包; 如果是本地开发环境,要把压缩包手动放到静态资源webapp/static-file-service/isv/开发商标识(如kdec)/领域标识(如cus)中。 3、将附件中的类cosmic5.0/kd包拷贝到本地的IDE中,编译运行 # 版本支持 COSMICV5.0.011.0 ## 参考资料 > [百度地图开放平台JavaScript API v3.0](https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference_3_0.html#a7b50)