更新记录

1.1.0(2022-08-29)

本次主要更新: 1.增加andorid版本

1.0.0(2022-08-26)

新版首发,后续增加andorid版本


平台兼容性

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

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


KJ-MapOffline

高德离线地图、下载离线地图、官方nvue高德地图扩展

注意事项

manifest.json -> app模块配置 -> Maps -> 高德地图 勾选  配置正确key

ios使用

<template>
    <view class="content">
        <view class="text">高德官方下载离线地图页面(带UI)</view>
        <button type="primary" @click="openVC">打开离线地图下载页面</button>
        <view class="text">自定义下载离线地图(不带UI)</view>
        <button type="primary" @click="setupWithCompletionBlock">初始化离线地图数据</button>
        <button type="primary" @click="getCities">获取城市</button>
        <button type="primary" @click="getProvinces">获取省份</button>
        <button type="primary" @click="getMunicipalities">获取直辖市</button>
        <button type="primary" @click="getNationWide">获取全国概要</button>
        <button type="primary" @click="downloadItem">下载</button>
        <button type="primary" @click="isDownloadingForItem">监测是否正在下载</button>
        <button type="primary" @click="pauseItem">暂停下载</button>
        <button type="primary" @click="deleteItem">删除item对应离线地图数据</button>
        <button type="primary" @click="cancelAll">取消全部下载</button>
        <button type="primary" @click="clearDisk">清除所有在磁盘上的离线地图数据</button>
        <button type="primary" @click="checkNewestVersion">监测新版本</button>
        <view class="text">下载完离线地图之后,可以断网,然后跳转看效果</view>
        <button type="primary" @click="tiaozhuan">跳转到地图页面</button>
    </view>
</template>

<script>
    const KJMapOffline = uni.requireNativePlugin('KJ-MapOffline');
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {

        },
        methods: {
            openVC() {
                KJMapOffline.openVC();
            },
            setupWithCompletionBlock() {
                /**
                 * 初始化离线地图数据,如果第一次运行且offlinePackage.plist文件不存在,则需要首先执行此方法。否则MAOfflineMap中的省、市、版本号等数据都为空。
                 * */
                KJMapOffline.setupWithCompletionBlock((res) => {
                    console.log("setupWithCompletionBlock:" + JSON.stringify(res))
                });
            },
            getCities() {
                KJMapOffline.getCities((res) => {
                    console.log("getCities:" + JSON.stringify(res))
                });
            },
            getProvinces() {
                KJMapOffline.getProvinces((res) => {
                    console.log("getProvinces:" + JSON.stringify(res))
                });
            },
            getMunicipalities() {
                KJMapOffline.getMunicipalities((res) => {
                    console.log("getMunicipalities:" + JSON.stringify(res))
                });
            },
            getNationWide() {
                KJMapOffline.getNationWide((res) => {
                    console.log("getNationWide:" + JSON.stringify(res))
                });
            },
            downloadItem() {
                var dic = {
                    "type": "city", //city province municipality nationWide
                    "itemsIndex": 0, //getCities或getProvinces或getMunicipalities或getNationWide方法 回调的items数组的索引
                    "isBackground": true,
                };
                KJMapOffline.downloadItem(dic, (res) => {
                    /**
                     * 返回字段说明:{"downloadStatus":2,"downloadItem":{"adcode":"110000","pinyin":"beijing","downloadedSize":0,"size":86297371,
                     * "jianpin":"bj","itemStatus":0,"name":"北京市"},"info":{"expectedSize":86297371,"receivedSize":42433659}}
                     * downloadStatus - 下载状态 0(以插入队列,等待中) 1(开始下载) 2(下载过程中) 3(下载成功) 4(取消) 5(解压缩) 6(全部顺利完成) 7(发生错误)
                     * name - 名字
                     * jianpin - 简拼
                     * pinyin - 拼音
                     * adcode - 区域编码
                     * size - 离线数据大小
                     * itemStatus - 状态 0(不存在) 1(缓存状态) 2(已安装) 3(已过期)
                     * expectedSize - 表示总的数据大小
                     * receivedSize - 表示已下载数据大小
                     * */
                    console.log("downloadItem:" + JSON.stringify(res))
                });
            },
            isDownloadingForItem() {
                var dic = {
                    "type": "city", //city province municipality nationWide
                    "itemsIndex": 0 //getCities或getProvinces或getMunicipalities或getNationWide方法 回调的items数组的索引
                };
                KJMapOffline.isDownloadingForItem(dic, (res) => {
                    console.log("isDownloadingForItem:" + JSON.stringify(res))
                });
            },
            pauseItem() {
                var dic = {
                    "type": "city", //city province municipality nationWide
                    "itemsIndex": 0 //getCities或getProvinces或getMunicipalities或getNationWide方法 回调的items数组的索引
                };
                KJMapOffline.pauseItem(dic, (res) => {
                    console.log("pauseItem:" + JSON.stringify(res))
                });
            },
            deleteItem() {
                var dic = {
                    "type": "city", //city province municipality
                    "itemsIndex": 0 //getCities或getProvinces或getMunicipalities或getNationWide方法 回调的items数组的索引
                };
                KJMapOffline.deleteItem(dic, (res) => {
                    console.log("deleteItem:" + JSON.stringify(res))
                });
            },
            cancelAll() {
                KJMapOffline.cancelAll();
            },
            clearDisk() {
                KJMapOffline.clearDisk();
            },
            checkNewestVersion() {
                /**
                 * 监测新版本。注意:如果有新版本,会重建所有的数据,包括provinces、municipalities、nationWide、cities,外部使用应当在newestVersionBlock中更新所持有的对象。
                 * */
                KJMapOffline.checkNewestVersion((res) => {
                    console.log("checkNewestVersion:" + JSON.stringify(res))
                });
            },
            tiaozhuan() {
                uni.navigateTo({
                    url: "map"
                })
            }
        }
    }
</script>
<style>
    .content {
        text-align: center;
    }

    .text {
        color: red;
        padding: 10px;
        font-size: 18px;
    }
</style>

andorid使用

<template>
    <view class="content">
        <map style="width: 0;height: 0;">注意:android需要放置mpa,要不方法执行不了</map>
        <text class="text">高德官方下载离线地图页面(带UI)</text>
        <button type="primary" @click="openVC">打开离线地图下载页面</button>
        <text class="text">自定义下载离线地图(不带UI)</text>
        <button type="primary" @click="setupWithCompletionBlock">初始化离线地图数据</button>

        <button type="primary" @click="getOfflineMapCityList">获取城市</button>
        <button type="primary" @click="getOfflineMapProvinceList">获取省份</button>
        <button type="primary" @click="getDownloadingCityList">获取所有正在下载或等待下载的城市</button>
        <button type="primary" @click="getDownloadingProvinceList">获取所有正在下载或等待下载的省份</button>
        <button type="primary" @click="getDownloadOfflineMapCityList">获取已经下载完成的城市</button>
        <button type="primary" @click="getDownloadOfflineMapProvinceList">获取已经下载完成的省份</button>

        <button type="primary" @click="downloadByCityName">根据城市名下载</button>
        <button type="primary" @click="downloadByCityCode">根据城市编码下载</button>
        <button type="primary" @click="downloadByProvinceName">根据省份名下载</button>
        <button type="primary" @click="pause">暂停离线地图下载</button>
        <button type="primary" @click="pauseByName">根据某个名称暂停下载</button>
        <button type="primary" @click="remove">根据给定的城市名称删除该城市的离线地图包</button>
        <button type="primary" @click="restart">重新开始任务,开始下载队列中的第一个为等待中的任务</button>
        <button type="primary" @click="stop">停止离线地图下载</button>

        <button type="primary" @click="updateOfflineCityByCode">根据城市编码,判断是否有更新的离线数据包</button>
        <button type="primary" @click="updateOfflineCityByName">根据城市名,判断是否有更新的离线数据包</button>
        <button type="primary" @click="updateOfflineMapProvinceByName">根据省份名,判断是否有更新的离线数据包</button>

        <text class="text">下载完离线地图之后,可以断网,然后跳转看效果</text>
        <button type="primary" @click="tiaozhuan">跳转到地图页面</button>
    </view>
</template>

<script>
    const KJMapOffline = uni.requireNativePlugin('KJ-MapOffline');
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {

        },
        methods: {
            openVC() {
                KJMapOffline.openVC();
            },
            setupWithCompletionBlock() {
                KJMapOffline.setupWithCompletionBlock((res) => {
                    console.log("初始化完成监听:" + JSON.stringify(res))
                }, (res) => {
                    /**
                     * 返回字段说明:{"status":2,"completeCode":0,"downName":"合肥市"}
                     * status - 状态  -1(解压失败错误,数据有可能有问题,所以重新下载)  0(正在下载) 1(正在解压)
                     * 2(等待下载) 3(暂停下载) 4(下载成功) 5(停止下载) 6(默认状态) 7(有更新,对于已下载的城市出现,线上出现新版本的时候会出现此状态。)
                     * 101(下载过程中网络问题,不属于错误,下次还可以继续下载) 102(AMap认证等异常,请检查key,下次还可以继续下载)
                     * 103(SD卡读写异常,下载过程有写入文件,解压过程也有写入文件,即出现IOexception) 1002(开始下载失败,已下载该城市地图)
                     * completeCode - 下载进度,下载完成之后为解压进度
                     * */
                    console.log("下载监听:" + JSON.stringify(res))
                }, (res) => {
                    /**
                     * 返回字段说明
                     * hasNew - 是否有更新
                     * */
                    console.log("检查更新监听:" + JSON.stringify(res))
                }, (res) => {
                    /**
                     * 返回字段说明
                     * success - 是否删除成功
                     * */
                    console.log("移除监听:" + JSON.stringify(res))
                });
            },
            getOfflineMapCityList() {
                KJMapOffline.getOfflineMapCityList((res) => {
                    console.log("getOfflineMapCityList:" + JSON.stringify(res))
                });
            },
            getOfflineMapProvinceList() {
                KJMapOffline.getOfflineMapProvinceList((res) => {
                    console.log("getOfflineMapProvinceList:" + JSON.stringify(res))
                });
            },
            getDownloadingCityList() {
                KJMapOffline.getDownloadingCityList((res) => {
                    console.log("getDownloadingCityList:" + JSON.stringify(res))
                });
            },
            getDownloadingProvinceList() {
                KJMapOffline.getDownloadingProvinceList((res) => {
                    console.log("getDownloadingProvinceList:" + JSON.stringify(res))
                });
            },
            getDownloadOfflineMapCityList() {
                KJMapOffline.getDownloadOfflineMapCityList((res) => {
                    console.log("getDownloadOfflineMapCityList:" + JSON.stringify(res))
                });
            },
            getDownloadOfflineMapProvinceList() {
                KJMapOffline.getDownloadOfflineMapProvinceList((res) => {
                    console.log("getDownloadOfflineMapProvinceList:" + JSON.stringify(res))
                });
            },
            downloadByCityName() {
                var dic = {
                    "cityName": "广州市",
                };
                KJMapOffline.downloadByCityName(dic);
            },
            downloadByCityCode() {
                var dic = {
                    "cityCode": "340000",
                };
                KJMapOffline.downloadByCityCode(dic);
            },
            downloadByProvinceName() {
                var dic = {
                    "provinceName": "广东省",
                };
                KJMapOffline.downloadByProvinceName(dic);
            },
            pause() {
                KJMapOffline.pause();
            },
            pauseByName() {
                var dic = {
                    "name": "广东省",
                };
                KJMapOffline.pauseByName(dic);
            },
            remove() {
                var dic = {
                    "name": "广东省",
                };
                KJMapOffline.remove(dic);
                dic = {
                    "name": "广州市",
                };
                KJMapOffline.remove(dic);
            },
            restart() {
                KJMapOffline.restart();
            },
            stop() {
                KJMapOffline.stop();
            },
            updateOfflineCityByCode() {
                var dic = {
                    "cityCode": "340000",
                };
                KJMapOffline.updateOfflineCityByCode(dic);
            },
            updateOfflineCityByName() {
                var dic = {
                    "cityName": "广州市",
                };
                KJMapOffline.updateOfflineCityByName(dic);
            },
            updateOfflineMapProvinceByName() {
                var dic = {
                    "provinceName": "广东省",
                };
                KJMapOffline.updateOfflineMapProvinceByName(dic);
            },
            tiaozhuan() {
                uni.navigateTo({
                    url: "map"
                })
            }
        }
    }
</script>
<style>
    .content {
        text-align: center;
    }

    .text {
        color: red;
        padding: 10px;
        font-size: 18px;
    }
</style>

隐私、权限声明

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

andorid: "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" />", "<uses-permission android:name=\"android.permission.INTERNET\" />", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />", "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />", "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\" />", "<uses-permission android:name=\"android.permission.BLUETOOTH\" />", "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />" ios:NSLocationAlwaysAndWhenInUseUsageDescription NSLocationWhenInUseUsageDescription

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

插件自身不采集任何数据,插件使用的高德地图 SDK采集数据请参考其官方说明:https://lbs.amap.com

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

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