更新记录

1.0.2(2024-03-20)

修复了定位不准确的bug

1.0.1(2024-02-18)


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 6.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


<template>
    <view class="content">
        <view class="text-area">
            <button @click="initBtnClick">init初始化</button>
            <button @click="createTerminal">创建一个终端</button>
            <button @click="createOneTrankFun">创建一条轨迹</button>
            <button @click="startCollectionServe">开启服务</button>
            <button @click="startCollectionLocation">开始自动持续采集位置</button>
            <button @click="getTrackClientLatestLocation">查询终端返回的实时位置</button><!-- 即查询最新轨迹点 -->
            <button @click="historyTrackRequest">查询终端12个小时的内上传的轨迹点</button><!-- 即查询查询历史轨迹 -->
            <button @click="queryTrackRequest">查询终端下属于某个轨迹的轨迹点 </button>  <!-- 查询终端下的轨迹 --> 
            <button @click="distanceRequest">查询某个终端在最近12小时内的行驶里程 </button> <!-- 即查询里程 -->
            <button @click="queryTerminalIsExist">查询终端是否存在</button>
            <button @click="stopCollectionLocation">停止自动持续采集位置</button>
            <button @click="stopCollectionServe">停止服务</button>
            <!-- 下面的按钮,要在开启采集位置之后,才能调用生效 -->
            <button @click="getServiceId">获取服务id</button>
            <button @click="getTerminalId">获取终端id</button>
            <button @click="getTrackId">获取轨迹id</button>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {
            // 可以不用在这里调用,根据自己实际业务情况即可
            this.initBtnClick()
        },
        methods: {
            /**
             * 在这里先给大家讲解一下基本概念:
             * 1.服务id: 大家必须要去高德地图官网注册,猎鹰sdk不提供创建服务方法,服务(service id)的创建请参考猎鹰rest api接口https://lbs.amap.com/api/t             rack/lieying-kaifa/api/service,是Web服务类型的key,不是Web端(JS API),好多小伙伴这里踩坑。切记,申请的服务id必须是web服务端的key
             * 
             * 2.下面用到的key:必须要去官网注册(下面的key传的是anroid申请的key),几乎使用的插件不让传key的都是默认用开发者的,
             *  然后后续要收高额费用才能用,所以一定要传自己的key,不给传key的都是耍流氓
             * 
             * 3.然后可以直接调用方法,下面的完全足够开发者使用了
             * 
             * // 比喻一下
             * 4. serviceId 就是相当于一个公司,termianlId终端id就是司机的手机终端,轨迹id就是:一个司机的手机,出车的时候,可以跑很多条轨迹
             * 
            */
            initBtnClick() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.init({
                    /**
                     *  高德的key,基本所有的很多插件,估计不让传自己的key,默认用开发者的,
                     *     然后后续要收高额费用才能用,所以一定要传自己的key,不给传key的都是耍流氓
                     * 
                     * key: 自己去高德申请的key,超级简单(android类型的key)
                     * serviceId:web服务 申请的id
                    */
                    key:'9919f09ff93354d6483a6ef8355d43a8',
                    tiem:2, // 2秒采集一次位置,
                    upLoadTime: 10, //10秒之后把采集到的点上传一次位置给服务器
                    storageSize:20, // 单位为Mb,如果断网,那么采集到的数据将放本地缓存,有网的的时候,自动上传给服务器
                    locationMode: 1, // 1 采用高精度GPS定位和网络定位,gps优先;2 是只使用GPS定位; 3 只使用网络定位
                },e =>{
                    uni.showToast({
                        // 返回终端的id 和名字
                        icon:'none',
                        title:JSON.stringify(e),
                        duration:3000
                    })
                })
            },
            // 创建一个终端(相当于一个公司的里面司机的一个手机终端)
            createTerminal() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.createTerminal({
                    serviceId:1018806,
                    // 一些参数
                    termianlName:'终端名字'
                }, e => {
                    uni.showToast({
                        // 返回终端的id 和名字
                        icon:'none',
                        title:JSON.stringify(e),
                        duration:3000
                    })
                })
            },
            // 创建一条轨迹,并且返回id,将来采集的点都是自动放在这个轨迹上面
            createOneTrankFun() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.createOneTrankFun({
                    // 一些参数
                    serviceId:1018806, // 服务id
                    terminalId:839147094 // 终端id
                }, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 这里能拿到轨迹id
                        duration:3000
                    })
                })
            },
            // 开启服务
            startCollectionServe() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.startCollectionServe({
                    serviceId:1018806, // 服务id
                    terminalId:839147094, // 终端id
                    //轨迹id; 直接传 -1 表示开启散点上传,也就是只上传到终端,不用上传到指定一条轨迹上面,那么下面用到trackid都不用传trackId
                    trackId:30,
                }, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 拿到是否开启的结果
                        duration:3000
                    })
                })
            },
            // 开始采集位置
            startCollectionLocation() {
                    const msf = uni.requireNativePlugin('msf-gaodetrack')
                    msf.startCollectionLocation({}, e=>{
                            uni.showToast({
                                icon:'none',
                                title:JSON.stringify(e),
                                duration:3000
                            })
                        })

            },
            //  /*查询终端的实时位置*/
            getTrackClientLatestLocation() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.getTrackClientLatestLocation({
                    // 一些参数
                    serviceId:1018806, // 服务id
                    terminalId:839147094, // 终端id
                }, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回终端的实时位置
                        duration:3000
                    })
                })
            },
            // 下面的代码查询出某个终端在最近12小时内上传的所有轨迹点:
            historyTrackRequest() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.historyTrackRequest({
                    // 一些参数
                    serviceId:1018806, // 服务id
                    terminalId:839147094, // 终端id
                    time: 12, // 12小时内
                    bindRoad:0,      // 不绑路
                    distance:0,      // 不做距离补偿
                    km:5000,   // 距离补偿阈值,只有超过5km的点才启用距离补偿
                    orderBy:0,  // 由旧到新排序
                    page:1,  // 返回第1页数据
                    size:100,    // 一页不超过100条
                }, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回终端的实时位置
                        duration:3000
                    })
                })
            },
            // 查询终端下属于某个轨迹的轨迹点
            queryTrackRequest() {
                    const msf = uni.requireNativePlugin('msf-gaodetrack')
                    msf.queryTrackRequest({
                        serviceId:1018806, // 服务id
                        terminalId:839147094, // 终端id
                        trackId: -1,    // 轨迹id,传-1表示查询该所有轨迹
                        time: 12, // 12小时内
                        denoising:0,      // 不启用去噪
                        bindRoad:0,      // 不绑路
                        precision:0,      // 不进行精度过滤
                        // DriveMode.DRIVING,  // 当前仅支持驾车模式
                        distance:0,      // 不做距离补偿
                        km:5000,   // 距离补偿阈值,只有超过5km的点才启用距离补偿
                        trackInfo: 1,  // 1表示结果应该包含轨迹点信息
                        page:1,  // 返回第1页数据
                        size:100,    // 一页不超过100条
                    }, e => {
                        uni.showToast({
                            icon:'none',
                            title:JSON.stringify(e), // 返回终端的实时位置
                            duration:3000
                        })
                    })
            },
            // 查询某个终端在最近12小时内的行驶里程: 
            distanceRequest() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.distanceRequest({
                    serviceId:1018806, // 服务id
                    terminalId:839147094, // 终端id
                    time: 12, // 12小时内
                    trackId: -1,  // 轨迹id,传-1表示包含散点在内的所有轨迹点
                }, e=>{
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回终端的实时位置
                        duration:3000
                    })
                })

            },
            // 查询某个终端是否存在
            queryTerminalIsExist() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.queryTerminalIsExist({
                    serviceId:1018806, // 服务id
                    terminalName:"myTrack", // 终端名字
                }, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回终端的实时位置
                        duration:3000
                    })
                })
            },
            // 停止采集
            stopCollectionLocation() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.stopCollectionLocation({}, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回结果
                        duration:3000
                    })
                })
            },
            // 停止服务 和开启时传入的track参数一致
            stopCollectionServe() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.stopCollectionServe({
                    serviceId:1018806, // 服务id
                    terminalId:839147094, // 终端id
                    //轨迹id; 直接传 -1 表示开启散点上传,也就是只上传到终端,不用上传到指定一条轨迹上面,那么下面用到trackid都不用传trackId
                    trackId:30,
                }, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回结果
                        duration:3000
                    })
                })
            },
            // 获取服务id
            getServiceId() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.getServiceId({}, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回终端的实时位置
                        duration:3000
                    })
                })
            },
            // 获取终端id
            getTerminalId() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.getTerminalId({}, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回终端的实时位置
                        duration:3000
                    })
                })
            },
            // 获取轨迹id
            getTrackId() {
                const msf = uni.requireNativePlugin('msf-gaodetrack')
                msf.getTrackId({}, e => {
                    uni.showToast({
                        icon:'none',
                        title:JSON.stringify(e), // 返回终端的实时位置
                        duration:3000
                    })
                })
            },

        }
    }
</script>

插件方法和参数

调用插件方法名字 说明 传递参数
initBtnClick() init初始化 看上面代码注释
createTerminal() 创建一个终端 看上面代码注释
createOneTrankFun 创建一条轨迹 看上面代码注释
startCollectionServe() 开启服务 看上面代码注释
startCollectionLocation() 开始自动持续采集位置 看上面代码注释
getTrackClientLatestLocation() 查询终端返回的实时位置 看上面代码注释
historyTrackRequest() 查询终端12个小时的内上传的轨迹点 看上面代码注释
queryTrackRequest() 查询终端下属于某个轨迹的轨迹点 看上面代码注释
distanceRequest() 查询某个终端在最近12小时内的行驶里程 看上面代码注释
queryTerminalIsExist() 查询终端是否存在 看上面代码注释
stopCollectionLocation() 停止自动持续采集位置 看上面代码注释
stopCollectionServe() 停止服务 看上面代码注释
getServiceId() 查询终端12个小时的内上传的轨迹点 看上面代码注释
getTerminalId() 获取终端id 看上面代码注释
getTrackId() 获取轨迹id 看上面代码注释

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<!--允许访问网络,必选权限--> <uses-permission android:name="android.permission.INTERNET" /> <!--允许获取精确位置,精准定位必选--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!--允许获取粗略位置,粗略定位必选--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--允许获取网络状态,用于网络定位(无gps情况下的定位),若需网络定位功能则必选--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--允许获取wifi网络信息,用于网络定位(无gps情况下的定位),若需网络定位功能则必选--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--允许获取wifi状态改变,用于网络定位(无gps情况下的定位),若需网络定位功能则必选--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!--后台获取位置信息,若需后台定位则必选--> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <!--用于申请调用A-GPS模块,卫星定位加速--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!--允许写设备缓存,用于问题排查--> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!--允许写入扩展存储,用于写入缓存定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--允许读设备等信息,用于问题排查--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问