如何使用百度地图API自动获取地址和经纬度

 我来答
奔跑的窝牛的家
高粉答主

2016-10-29 · 每个回答都超有意思的
知道顶级答主
回答量:3.6万
采纳率:98%
帮助的人:4474万
展开全部

1、HTML代码如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
    <title>点击地图获取地址和经纬度map,address,lng,lat</title>  
    <meta name="robots" content="noindex, nofollow">  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
    <!-- 将百度地图API引入,设置好自己的key -->  
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=7a6QKaIilZftIMmKGAFLG7QT1GLfIncg"></script>  
</head>  
<body>  
  
<div class="main-div">  
    <form method="post" action="" name="theForm" enctype="multipart/form-data" onsubmit="return validate()">  
        <table cellspacing="1" cellpadding="3" width="100%">  
            <tr>  
                <td class="label">经度</td>  
                <td><input type="text" name="lng" id="lng" value=""/>  
                </td>  
            </tr>  
            <tr>  
                <td class="label">纬度</td>  
                <td><input type="text" name="lat" id="lat" value=""/>  
                </td>  
            </tr>  
            <tr>  
                <td class="label">地址</td>  
                <td>  
   孝颤胡                 <input type='text' value='' name='sever_add' id='sever_add' readonly>  
                    <input type='button' value='点击显示地图获取地址经纬度' id='open'>  
                </td>  
            巧拦</tr>  
        </table>  
    </form>  
    <div id='allmap' style='width: 50%; height: 50%; position: absolute; display: none'></div>  
</div>  
</body>  
</html>

2、JS代码如下

<script type="text/javascript">  
    function validate() {  
        var sever_add = document.getElementsByName('sever_add')[0].value;  
        if (isNull(sever_add)) {  
            alert('请选择地址');  
            return false;  
        }  
        return true;  
    }  
  
    //判断是否是空  
    function isNull(a) {  
        return (a == '' || typeof(a) == 'undefined' || a == null) ? true : false;  
    }  
  
    document.getElementById('open').onclick = function () {  
        if (document.getElementById('allmap').style.display == 'none') {  
            document.getElementById('allmap').style.display = 'block';  
     洞锋   } else {  
            document.getElementById('allmap').style.display = 'none';  
        }  
    }  
  
    var map = new BMap.Map("allmap");  
    var geoc = new BMap.Geocoder();   //地址解析对象  
    var markersArray = [];  
    var geolocation = new BMap.Geolocation();  
  
  
    var point = new BMap.Point(116.331398, 39.897445);  
    map.centerAndZoom(point, 12); // 中心点  
    geolocation.getCurrentPosition(function (r) {  
        if (this.getStatus() == BMAP_STATUS_SUCCESS) {  
            var mk = new BMap.Marker(r.point);  
            map.addOverlay(mk);  
            map.panTo(r.point);  
            map.enableScrollWheelZoom(true);  
        }  
        else {  
            alert('failed' + this.getStatus());  
        }  
    }, {enableHighAccuracy: true})  
    map.addEventListener("click", showInfo);  
  
  
    //清除标识  
    function clearOverlays() {  
        if (markersArray) {  
            for (i in markersArray) {  
                map.removeOverlay(markersArray[i])  
            }  
        }  
    }  
    //地图上标注  
    function addMarker(point) {  
        var marker = new BMap.Marker(point);  
        markersArray.push(marker);  
        clearOverlays();  
        map.addOverlay(marker);  
    }  
    //点击地图时间处理  
    function showInfo(e) {  
        document.getElementById('lng').value = e.point.lng;  
        document.getElementById('lat').value =  e.point.lat;  
        geoc.getLocation(e.point, function (rs) {  
            var addComp = rs.addressComponents;  
            var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;  
            if (confirm("确定要地址是" + address + "?")) {  
                document.getElementById('allmap').style.display = 'none';  
                document.getElementById('sever_add').value = address;  
            }  
        });  
        addMarker(e.point);  
    }  
</script>

将js代码放入到html中,我们可以得到效果图如下:


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式