apicloud打开地图导航

//百度坐标转高德(传入经度、纬度)
function bd_decrypt(bd_lng, bd_lat) {
    var X_PI = Math.PI * 3000.0 / 180.0;
    var x = bd_lng - 0.0065;
    var y = bd_lat - 0.006;
    var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
    var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
    var gg_lng = z * Math.cos(theta);
    var gg_lat = z * Math.sin(theta);
    return {
        lng: gg_lng,
        lat: gg_lat
    }
}
//高德坐标转百度(传入经度、纬度)
function bd_encrypt(gg_lng, gg_lat) {
    var X_PI = Math.PI * 3000.0 / 180.0;
    var x = gg_lng,
        y = gg_lat;
    var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);
    var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);
    var bd_lng = z * Math.cos(theta) + 0.0065;
    var bd_lat = z * Math.sin(theta) + 0.006;
    return {
        bd_lat: bd_lat,
        bd_lng: bd_lng
    };
}
//百度导航     //同步返回结果:
function baiduditu(addressDesc, latitude, longitude) {
    var systemType = api.systemType;
    var buttons = new Array();
    var amap_installed = false;
    var bmap_installed = false;
    if (systemType == 'ios') {
        var installed = api.appInstalled({
            sync: true,
            appBundle: 'iosamap://'
        });
        if (installed) {
            amap_installed = true;
            buttons.push('高德地图');
        }
        var installed = api.appInstalled({
            sync: true,
            appBundle: 'baidumap://'
        });
        if (installed) {
            bmap_installed = true;
            buttons.push('百度地图');
        }
    } else {
        var installed = api.appInstalled({
            sync: true,
            appBundle: 'com.autonavi.minimap'
        });
        if (installed) {
            amap_installed = true;
            buttons.push('高德地图');
        }
        var installed = api.appInstalled({
            sync: true,
            appBundle: 'com.baidu.BaiduMap'
        });
        if (installed) {
            bmap_installed = true;
            buttons.push('百度地图');
        }
    }
    if (bmap_installed == false && amap_installed == false) {
        api.toast({
            msg: '您没有安装任何地图软件'
        });
        return false;
    }
    // 因为后台给的是高德的经纬度所以要转成百度的
    var baiduMap = bd_encrypt(longitude, latitude)
    var address = addressDesc;
    var latbaidu = baiduMap.bd_lat;
    var lngbaidu = baiduMap.bd_lng;
    var latgaode = latitude;
    var lnggaode = longitude;
    api.actionSheet({
        cancelTitle: '取消',
        buttons: buttons
    }, function (ret, err) {
        var index = ret.buttonIndex;

        switch (index) {
            case 1:
                if (amap_installed && bmap_installed) {
                    if (systemType == 'ios') {
                        api.openApp({
                            iosUrl: 'iosamap://path?sourceApplication=applicationName&sid=BGVIS1&did=BGVIS2&dlat=' + latgaode + '&dlon=' + lnggaode + '&dname=' + address + '&dev=0&t=3',
                        }, function (ret, err) {

                        });
                    } else {
                        api.openApp({
                            androidPkg: 'android.intent.action.VIEW',
                            uri: 'amapuri://route/plan/?dlat=' + latgaode + '&dlon=' + lnggaode + '&dname=' + address + '&dev=0&t=3'
                        }, function (ret, err) {

                        });
                    }
                } else {
                    if (amap_installed) {
                        if (systemType == 'ios') {
                            api.openApp({
                                iosUrl: 'iosamap://path?sourceApplication=applicationName&sid=BGVIS1&did=BGVIS2&dlat=' + latgaode + '&dlon=' + lnggaode + '&dname=' + address + '&dev=0&t=3',
                            }, function (ret, err) {

                            });
                        } else {
                            api.openApp({
                                androidPkg: 'android.intent.action.VIEW',
                                uri: 'amapuri://route/plan/?dlat=' + latgaode + '&dlon=' + lnggaode + '&dname=' + address + '&dev=0&t=3'
                            }, function (ret, err) {

                            });
                        }

                    }
                    if (bmap_installed) {
                        if (systemType == 'ios') {
                            api.openApp({
                                iosUrl: 'baidumap://map/direction?destination=latlng:' + latbaidu + ',' + lngbaidu + '|name:' + address + '&mode=riding',
                            }, function (ret, err) {
                                if (err) {

                                    //alert(JSON.stringify(err));
                                }
                            });
                        } else {
                            api.openApp({
                                androidPkg: 'android.intent.action.VIEW',
                                uri: 'baidumap://map/direction?destination=latlng:' + latbaidu + ',' + lngbaidu + '|name:' + address + '&mode=riding'
                            }, function (ret, err) {

                            });
                        }
                    }
                    break;
                }

                case 2:
                    if (systemType == 'ios') {
                        api.openApp({
                            iosUrl: 'baidumap://map/direction?destination=latlng:' + latbaidu + ',' + lngbaidu + '|name:' + address + '&mode=riding',
                        }, function (ret, err) {
                            if (err) {
                                //alert(JSON.stringify(err));

                            }
                        });
                    } else {
                        api.openApp({
                            androidPkg: 'android.intent.action.VIEW',
                            uri: 'baidumap://map/direction?destination=latlng:' + latbaidu + ',' + lngbaidu + '|name:' + address + '&mode=riding'
                        }, function (ret, err) {
                            if (err) {
                                //alert(JSON.stringify(err));
                            }
                        });
                    }
                    break;
        }
    });
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值