内置API及url调用百度地图APP导航
方法中的两个参数,为自己当前位置的经纬度
function arouseMap(lon,lat){
var location = $api.getStorage('location');
if(location){
var mylon = location.lon;
var mylat = location.lat;
}else {
api.toast( {
msg: '请允许程序获取当前位置',
duration: 2000,
location: 'middle'
} );
return false;
}
var uri="";
uri +='androidamap://navi?';
uri +='sourceApplication='+api.appName;
uri +='&lat='+lat+'&lon='+lon;
uri +='&dev=1';
uri +='&style=2';
api.openApp({
// androidPkg: 'com.autonavi.minimap',
androidPkg: 'android.intent.action.VIEW',
appParam:{
lat:lat,
lon:lon,
dev:'0',
style:'2',
sourceApplication:api.appName
},
iosUrl:'iosamap://navi',
uri: uri
}, function(ret, err) {
if (ret) {
} else {
console.log(JSON.stringify(err));
api.toast( {
msg: '未安装百度地图',
duration: 2000,
location: 'middle'
} );
}
});
}
下面这个方法,用来获取当前设备的坐标,可以看到我这里判断了一下IOS系统需要先初始化一下,才可以调用方法。
function baiduMap(){
var bMap = api.require('bMap');
bMap.getLocation({
accuracy: '100m',
autoStop: true,
filter: 1
}, function(ret, err) {
if (ret.status) {
var lon = ret.lon;
var lat = ret.lat;
arouseMap(lon,lat);
} else {
console.log("百度地图错误"+err.code);
}
});
}
如果是IOS系统的话应该先初始化一下模块,于是我把上面的方法改了一下,判断一下手机系统,但是不知道为什么我这边ios初始化返回的是false,
function baiduMap(){
var systemType = api.systemType;
if (systemType == 'ios'){
var map = api.require('bMap');
map.initMapSDK(function(ret) {
if (ret.status) {
var bMap = api.require('bMap');
bMap.getLocation({
accuracy: '100m',
autoStop: true,
filter: 1
}, function(ret, err) {
if (ret.status) {
var lon = ret.lon;
var lat = ret.lat;
arouseMap(lon,lat);
}else{
console.log("百度地图错误"+err.code);
}
});
}
});
}else{
var bMap = api.require('bMap');
bMap.getLocation({
accuracy: '100m',
autoStop: true,
filter: 1
}, function(ret, err) {
if (ret.status) {
var lon = ret.lon;
var lat = ret.lat;
arouseMap(lon,lat);
} else {
console.log("百度地图错误"+err.code);
}
});
}
}
API详细文档地址