移动端用户定位与自动填充

本文介绍了在移动端如何利用HTML5的地理位置定位技术,并结合jQuery处理定位数据,解决位置偏移、坐标精度问题,同时展示了如何将定位信息自动填充到input标签中,包括涉及到的CSS样式和JavaScript代码实现。

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

1、使用到的技术

HTML+CSS+JS+jJquery+H5地理位置定位

2、遇到的问题

1)使用H5的地理位置定位方法,所获取到的位置会有偏移量
2)经纬度有长度限制,小数点后位数为14位
3)使用百度地图的时候,需要给地图设置宽、高和中心点范围,方可显示地图
填充内容的时候
4)在把定位的内容填充到标签里的时候,对于input标签,$('标签名').val(获取到的地址)
其他标签$('标签名').text(获取到的地址);

3、详细代码

引入外部文件

<script src="jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?你的密钥"></script>
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>  

css部分:

body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";background: #f6f6f6;}
pre {
   font-size: 1.4rem;
   margin: 12% 0 12% 8%;
}
input {
   height: 1.4rem;
   border: none;
   border-bottom: 1px solid gray;
   width: 200px;
   background: #f6f6f6;
}
.btn {
   width: 100%;
   height: 34px;
   color: #fff;
   font-size: 1.2rem;
   background: orange;
   border: none;
   position: absolute;
   bottom: 0;
}
#allmap {
   width: 100%;
   height: 180px;
}
table {
   width: 100%;
}

html部分:

<form action="" method="post" >
    <table>
        <tr>
            <td><pre>姓    名:</pre></td>
            <td><input class="name" id="names" type="text" placeholder="请输入姓名" /></td>
        </tr>
        <tr>
            <td><pre>联系电话:</pre></td>
            <td><input class="phone" id="phones" maxlength="11" type="text" placeholder="请输联系11位的手机号码" /></td>
        </tr>
        <tr>
            <td><pre>当前地址:</pre></td>
            <td><input id="address" type="text" val=""/></td>
        </tr>
        <tr>
            <td colspan="2"><div id="allmap"></div></td>
        </tr>
    </table>
</form>
<button class="btn" type="button" onclick = "login_check()">确认</button>

js部分:

function getLocation(){
        var options={
            enableHighAccuracy:true,
            maximumAge:1000
        }
        if(navigator.geolocation){
            //浏览器支持geolocation
            navigator.geolocation.getCurrentPosition(onSuccess,onError,options);
        }else{
            //浏览器不支持geolocation
            alert('您的浏览器不支持地理位置定位');
        }
    }
    function onSuccess(position){
        var longitude =position.coords.longitude;
        var latitude = position.coords.latitude;
        // alert('经度'+longitude+',纬度'+latitude);
        var map = new BMap.Map("allmap");
        var gpsPoint = new BMap.Point(longitude,latitude);
        BMap.Convertor.translate(gpsPoint, 0, function (point) {  //处理H5偏移量
            map.centerAndZoom(point,14);  
            var marker = new BMap.Marker(point);  // 创建标注
            map.addOverlay(marker);               // 将标注添加到地图中
            marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画          
            var geoc = new BMap.Geocoder();
            geoc.getLocation(point, function(rs){
                var addComp = rs.addressComponents;
                var addr = addComp.province + addComp.city  + addComp.district + addComp.street ;
                $('#address').val(addr);   //获取input标签的值,将位置填充到input标签
            });
        });
    }
    function onError(error){
        switch(error.code){
            case 1:
                alert("位置服务被拒绝");
                break;
            case 2:
                alert("暂时获取不到位置信息");
                break;
            case 3:
                alert("获取信息超时");
                break;
            case 4:
                alert("未知错误");
                break;
        }
    }
window.onload=getLocation;

效果图:
这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值