更新记录
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 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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>