利用HTML5定位功能,实现在百度地图上定位

7 篇文章 0 订阅
5 篇文章 0 订阅
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML5定位</title>
    <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
  <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=wqBXfIN3HkpM1AHKWujjCdsi"></script>
  <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
    <style type="text/css">
    *{ margin: 0px; padding: 0px;}
  body{text-align: center;  height: 100%;overflow:hidden;}
  #allmap{ width: 100%;height: 100%; position: absolute;}
    </style>
</head>
<body>
    <div id="allmap"></div>
<script type="text/javascript">
 $(function(){
     if(supportsGeoLocation()){
        alert("你的浏览器支持 GeoLocation.");
     }else{
        alert("不支持 GeoLocation.")
     }
  // 检测浏览器是否支持HTML5
               function supportsGeoLocation(){
                return !!navigator.geolocation;
              }  
  // 单次位置请求执行的函数             
               function getLocation(){
                  navigator.geolocation.getCurrentPosition(mapIt,locationError);
               }
  //定位成功时,执行的函数
              function mapIt(position){ 
                var lon = position.coords.longitude;
                var lat = position.coords.latitude;
                // alert("您位置的经度是:"+lon+" 纬度是:"+lat);
                var map = new BMap.Map("allmap");
                var point = new BMap.Point(""+lon+"",""+lat+"");
                map.centerAndZoom(point,19);
                var gc = new BMap.Geocoder();
                      translateCallback = function (point){
                          var marker = new BMap.Marker(point);
                          map.addOverlay(marker);
                          map.setCenter(point);
                          gc.getLocation(point, function(rs){
                                var addComp = rs.addressComponents;
                                if(addComp.province!==addComp.city){
                                  var sContent =
                                  "<div><h4 style='margin:0 0 5px 0;padding:0.2em 0'>你当前的位置是:</h4>" + 
                                  "<p style='margin:0;line-height:1.5;font-size:13px;text-indent:2em'>"+addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber+"</p>" + 
                                  "</div>";}
                                else{
                                  var sContent =
                                  "<div><h4 style='margin:0 0 5px 0;padding:0.2em 0'>你当前的位置是:</h4>" + 
                                  "<p style='margin:0;line-height:1.5;font-size:13px;text-indent:2em'>"+ addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber+"</p>" + 
                                  "</div>";
                                }
                                var infoWindow = new BMap.InfoWindow(sContent);
                                map.openInfoWindow(infoWindow,point);
                          }); 
                      }                    
                  BMap.Convertor.translate(point,0,translateCallback); 
            }
  // 定位失败时,执行的函数
               function locationError(error)
              {
              switch(error.code)
                {
                case error.PERMISSION_DENIED:
                  alert("User denied the request for Geolocation.");
                  break;
                case error.POSITION_UNAVAILABLE:
                   alert("Location information is unavailable.");
                  break;
                case error.TIMEOUT:
                   alert("The request to get user location timed out.");
                  break;
                case error.UNKNOWN_ERROR:
                   alert("An unknown error occurred.");
                  break;
                }
              }
  // 页面加载时执行getLocation函数
  window.onload = getLocation;  
        })
</script>
</body>
</html>

福利:阿里云服务器-全场景 首次购买ECS享实例首台5折限时领取红包

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
html5可以使用geolocation API来获取用户的地理位置信息,并且可以通过百度地图API将获取到的地理位置信息在地图上显示出来的示例。 首先,在html文件中,需要引入百度地图API的相关代码,并且添加一个用于显示地图的div元素。然后,在JavaScript中使用geolocation API来获取用户的地理位置信息,获取到经纬度后再调用百度地图API的相关方法,在地图上显示出用户的位置标记。 具体代码示例如下: ```html <!DOCTYPE html> <html> <head> <title>HTML5定位百度地图显示示例</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=your_baidu_map_api_key"></script> </head> <body> <div id="map" style="width: 100%; height: 400px;"></div> <script> var map = new BMap.Map("map"); var point = new BMap.Point(116.404, 39.915); map.centerAndZoom(point, 15); if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; var point = new BMap.Point(lon, lat); var marker = new BMap.Marker(point); map.addOverlay(marker); map.panTo(point); }); } else { alert("浏览器不支持地理位置信息获取"); } </script> </body> </html> ``` 在这个示例中,首先引入了百度地图API的js文件,并创建了一个用于显示地图的div元素。然后在JavaScript中使用geolocation API获取用户的地理位置信息,再利用百度地图API在地图上显示出用户的位置标记。当用户允许地理位置信息获取时,地图会自动定位到用户的位置,并显示在地图上。如果浏览器不支持地理位置信息获取,则会弹出提示信息。这样就实现html5定位并在百度地图上显示的示例。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值