h5判断百度、高德、腾讯地图客户端是否安装及调起客户端导航

本文介绍了一个移动端应用如何获取用户当前位置并启动导航至指定目的地的方法。包括使用不同地图应用(如百度地图、高德地图和腾讯地图)进行路线规划的具体实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(function($, navigation) {

    navigation.getLocation = function(callback) {
        callback = callback || $.noop;
        plus.geolocation.getCurrentPosition(callback, function(e) {
            mui.toast("异常:" + e.message);
        });
    }

    function translatePoint(position) {
        //currentLon = position.coords.longitude;
        //currentLat = position.coords.latitude;
        //        local = position;
        //        if(showMap) {
        //            openMap(local);
        //        }
        console.log("-----------position" + JSON.stringify(position))
        return {
            currentLon: position.coords.longitude,
            currentLat: position.coords.latitude
        };
    }


   //如果导航只用这个方法久可以了,其它方法是为了备注以后可能用到的需求而保留的 。siteName是终点的文字描述。

    navigation.startNavigation = function(longitude, latitude,siteName) {
        //http://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.CoordinateConvertOptions
        var wt = plus.nativeUI.showWaiting('正在获取当前位置');
        navigation.getLocation(function(position) {

            var point = new plus.maps.Point(longitude, latitude);
            var options = {
                coordType:"bd09ll"//源数据的坐标类型
            };
            plus.maps.Map.convertCoordinates(point, options, function(event) {//mui转换坐标系
                wt.close();
                var dst = event.coord; // 转换后的坐标值
                var src = new plus.maps.Point(position.coords.longitude, position.coords.latitude);
                // 调用系统地图显示
                plus.maps.openSysMap(dst, siteName, src);

            }, function(e) {
                alert("Failed:" + JSON.stringify(e));
            });

            //navigation.openMap(position, latitude, longitude);
        });
    }

    navigation.openMap = function(position, latitude, longitude) {
        var lat = latitude;
        var lng = longitude;
        //inspInfo.latitude = 30.335682;
        //inspInfo.longitude = 120.224934;
        //百度com.baidu.BaiduMap  高德com.autonavi.minimap 腾讯com.tencent.map
        //        if(navigation.judgeExists('com.baidu.BaiduMap')) {
        //            url = "http://api.map.baidu.com/direction?origin=latlng:" + position.coords.latitude + "," + position.coords.longitude + "|name:当前位置&destination=latlng:" + lat + "," + lng + "|name:终点&mode=driving&region=中国&output=html&src=项目名称";
        //        } else
        if(navigation.judgeExists('com.autonavi.minimap')) {
            //转换火星坐标系
            var gd = coordinate.bd09togcj02(position.coords.longitude, position.coords.latitude);
            var gd2 = coordinate.bd09togcj02(lng, lat);
            url = "http://uri.amap.com/navigation?from=" + gd[0] + "," + gd[1] + ",当前位置&to=" + gd2[0] + "," + gd2[1] + ",站点&mode=car&src=公司名称&callnative=1"

        } else if(navigation.judgeExists('com.tencent.map')) {
            //百度转gps坐标系
            var gd = coordinate.bd09towgs84(position.coords.longitude, position.coords.latitude);
            var gd2 = coordinate.bd09towgs84(lng, lat);
            url = "http://apis.map.qq.com/uri/v1/routeplan?type=drive&from=当前位置&fromcoord=" + gd[1] + "," + gd[0] + ",当前位置&to=站点&tocoord=" + gd2[1] + "," + gd2[0] + "&coord_type=1&referer=项目名称"

        } else {

            mui.toast('没有找到地图客户端');
            return;
        }
        //调用地图url
        var uri = encodeURI(url);
        //        plus.runtime.openURL(uri);
        //        mui.openWindow(uri);
    }

    /**
     * 判断客户端是否安装
     */
    navigation.judgeExists = function(packageName) {
        try {
            var main = plus.android.runtimeMainActivity();
            var packageManager = main.getPackageManager();
            var PackageManager = plus.android.importClass(packageManager);
            var packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
            if(packageInfo) {
                //已安装
                return true;
            } else {
                //未安装
                return false;
            }
        } catch(e) {
            //未安装
            return false;
        }
    }

}(mui, window.navigation = {}));
H5(HTML5)页面中集成第三方地图应用进行导航通常涉及使用浏览器的Geolocation API获取用户位置信息,然后通过JavaScript库(如`amap.js`、`bmap.js`或`tencentmaps.js`等)来实现地图显示和路线规划。以下是集成几个常见地图服务的基本步骤: 1. 百度地图导航:使用BMap.js库,首先需要在项目中引入Baidu Maps的API,并在网页上创建地图实例,然后可以调用导航API,如`BMap.Map()`、`BMap.Autocomplete()`等。 ```html <script src="https://api.map.baidu.com/api?v=3.0&ak=your_api_key"></script> ``` 2. 高德地图导航:使用AMap.js,同样先引入API并初始化地图高德地图有详细的文档和示例,包括`AMap.geolocation()`和`AMap Routing`模块。 ```html <script src="https://webapi.amap.com/maps?v=1.4.14&key=your_amap_key"></script> ``` 3. 腾讯地图导航腾讯地图提供了Tencent Maps JavaScript SDK,需引入相应JS文件。导航功能可通过`Tencent.maps.qq.maps`提供的API实现。 ```html <script src="https://apis.map.qq.com.qq.maps.all.v3.js?key=your_tencent_map_key"></script> ``` 4. 苹果iOS地图:对于移动端,如果是在Apple的Web View中,你可以利用`navigator.geolocation`获取地理位置,然后触发用户的设备地图应用打开导航。然而这通常是系统级别的行为,由用户是否选择分享位置权限决定。 ```javascript if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值