html5移动端根据百度地图api获取详细地址

本文介绍如何使用BMap API实现地理位置定位,并通过经纬度获取详细的地址信息。包括加载BMap库、获取当前位置坐标及将GPS坐标转换为百度地图坐标系的方法。
    <script type="text/javascript" src="js/BMap.js" ></script>
    <script type="text/javascript">  
        // 扩展API是否准备好,如果没有则监听“plusready"事件
        if(window.plus){
            plusReady();
        }else{ 
            document.addEventListener( "plusready", plusReady, false );
        }
        // 扩展API准备完成后要执行的操作
        function plusReady(){
            var map = new BMap.Map("allmap");  
            var longitude, latitude;  
            navigator.geolocation.getCurrentPosition(function (position) {  
                longitude = position.coords.longitude;  
                latitude = position.coords.latitude;  
            });  
            setTimeout(function () {  
                var gpsPoint = new BMap.Point(longitude, latitude);  
                BMap.Convertor.translate(gpsPoint, 0, function (point) {  
                    var geoc = new BMap.Geocoder();  
                    geoc.getLocation(point, function (rs) {  
                        var addComp = rs.addressComponents;
                        alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);  
                    });  
                });  
            }, 3000);
        }        

    </script>

BMap.js:
(function(){ 
    window.BMap_loadScriptTime = (new Date).getTime(); 
    document.write('<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=1.3"></script>');
    document.write('<link rel="stylesheet" type="text/css" href="http://api.map.baidu.com/res/13/bmap.css"/>');
    //2011-7-25
    function load_script(xyUrl, callback){
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = xyUrl;
        //借鉴了jQuery的script跨域方法
        script.onload = script.onreadystatechange = function(){
            if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){
                callback && callback();
                // Handle memory leak in IE
                script.onload = script.onreadystatechange = null;
                if ( head && script.parentNode ) {
                    head.removeChild( script );
                }
            }
        };
        // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
        head.insertBefore( script, head.firstChild );
    }
    function translate(point,type,callback){
        var callbackName = 'cbk_' + Math.round(Math.random() * 10000);    //随机函数名
        var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from="+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName;
        //动态创建script标签
        load_script(xyUrl);
        BMap.Convertor[callbackName] = function(xyResult){
            delete BMap.Convertor[callbackName];    //调用完需要删除改函数
            var point = new BMap.Point(xyResult.x, xyResult.y);
            callback && callback(point);
        }
    }
    window.BMap = window.BMap || {};
    BMap.Convertor = {};
    BMap.Convertor.translate = translate;
})();

 



 

转载于:https://www.cnblogs.com/007sx/p/6792740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值