文章目录
- 一、地图展示问题
- 1.使用该h5的方法,修改相关provider的参数为baidu
- 2.离线打包配置
- 二、自动更新问题
- 1.将build.gradle中的targetSdkVersion调到26或者更高。
- 2.在Androidmanifest.xml 的application子节点下添加provider节点,将里面的XXXX.XXX.XX改成 build.gradle 里的 applicationId的值。
- 3.在Androidmanifest.xml 根节点中添加权限
一、地图展示问题
问题描述:离线打包调试app,发现地图打开了,但是获取当前位置定位无任何效果,地图使用的是天地图,引入天地图的js,实现调用,获取手机用户当前定位的方法是plus.geolocation.getCurrentPosition。
//手机用户定位位置
function userLocation(addrpoint) {
//获取用户的当前位置信息设备GPS坐标信息
plus.geolocation.getCurrentPosition(function(p){
// console.log(p.addresses);
// console.log(JSON.stringify(p.address));
// console.log(p.coordsType);
// console.log(p.coords.longitude);
// console.log(p.coords.latitude);
var gpsPoint = new plus.maps.Point(p.coords.longitude, p.coords.latitude);//将 坐标转为mui的点对象
var cgcs2000Point = gpsPoint;//目前CGCS2000和WGS84区别不大认为他们是相容的。所以不做转换了
var point = (addrpoint instanceof plus.maps.Point) ? addrpoint : cgcs2000Point;//转为mui的point对象
map.centerAndZoom(new T.LngLat(point.getLng(), point.getLat()), zoom);
getPlace(point);
createMarker(point);
},function(e){
console.log('Geolocation error: ' + e.message);
},{provider:'system'}); //provider 取值: "system":系统定位, "baidu":百度定位, "amap":高德定位, 默认 amap>baidu>system
};
解决方法:
1.使用该h5的方法,修改相关provider的参数为baidu
//手机用户定位位置
function userLocation(addrpoint) {
//console.log(JSON.stringify(addrpoint))
//获取用户的当前位置信息设备GPS坐标信息
plus.geolocation.getCurrentPosition(function(p){
// console.log(p.addresses);
// console.log(JSON.stringify(p.address));
// console.log(p.coordsType);
// console.log(JSON.stringify(p));
//var gpsPoint = new plus.maps.Point(p.coords.longitude, p.coords.latitude);//将坐标转为mui的点对象
(2)根据获取的到的p的坐标系类型为gcj02,然后调用封装好的js的方法 把gcj02坐标转成天地图的WGS84
let gps= gcj02towgs84(p.coords.longitude, p.coords.latitude);
var gpsPoint = new plus.maps.Point(gps.lng,gps.lat);//将坐标转为mui的点对象
var cgcs2000Point = gpsPoint;//目前CGCS2000和WGS84区别不大认为他们是相容的。所以不做转换了
var point = (addrpoint instanceof plus.maps.Point) ? addrpoint : cgcs2000Point;//转为mui的point对象
map.centerAndZoom(new T.LngLat(point.getLng(), point.getLat()), zoom);
getPlace(point);
createMarker(point);
},function(e){
console.log('Geolocation error: ' + e.message);
},{provider:'baidu'});(1)修改参数 //provider 取值: "system":系统定位, "baidu":百度定位, "amap":高德定位, 默认 amap>baidu>system
2.离线打包配置
- 需要拷贝的文件
需要引入工程的jar文件
需要将以下jar文件放到工程的libs目录下
SDK\libs baidu-libs-release.aar,map-baidu-release.aar
- Androidmainfest.xml文件需要修改的项
需要在application节点前添加权限:
<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_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
application节点下配置如下代码:
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="%appkey_android%"></meta-data>
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service>
- dcloud_properties.xml文件需要修改的项
dcloud_properties.xml文件在assets/data目录下
features节点下添加:
<feature name="Maps" value="io.dcloud.js.map.JsMapPluginImpl"></feature>
services节点下添加:
<service name="Maps" value="io.dcloud.js.map.MapInitImpl" />
再调试,即可测试获取当前定位能不能正常使用。
二、自动更新问题
问题描述:点击app进入初始化,弹出自动更新页面,但是更新完之后,弹出不了安装界面,安装不了最新版本的app,这样就导致app每次初始化的时候都会提示需要更新,调试发现自动更新代码里的调用 plus.runtime.install 不起作用
解决方法:
1.将build.gradle中的targetSdkVersion调到26或者更高。
2.在Androidmanifest.xml 的application子节点下添加provider节点,将里面的XXXX.XXX.XX改成 build.gradle 里的 applicationId的值。
<!--自动更新安装需要-->
<provider
android:name="io.dcloud.common.util.DCloud_FileProvider"
android:authorities="XXXX.XXX.XX(当前的应用包名).dc.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/dcloud_file_provider" />
</provider>
3.在Androidmanifest.xml 根节点中添加权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
4.可以在生成离线打包前,配置 manifest.json 权限,把相关自动更新的权限都给勾上。
完成以上配置,在调试即可解决问题。