打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
移动项目开发经验:HTML5获取地理位置与百度地图接口


定位功能(Geolocation)是HTML5的新特性,因此只有在支持HTML5的现代浏览器上运行,特别是手持设备如iphone,地理定位更加精确。首先我们要检测用户设备浏览器是否支持地理定位,如果支持则获取地理信息。注意这个特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的,所以我们在访问该应用时会提示是否允许地理定位,我们当然选择允许即可。

<code>
function getLocation(){ 
    if (navigator.geolocation){ 
         navigator.geolocation.getCurrentPosition(showPosition,showError); 
   }else{
       alert("浏览器不支持地理定位。"); 
  } 
} 
</code>

上面的代码可以知道,如果用户设备支持地理定位,则运行 getCurrentPosition() 方法。如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对象,getCurrentPosition() 方法的第二个参数showError用于处理错误,它规定当获取用户位置失败时运行的函数。

我们先来看函数showError(),它规定获取用户地理位置失败时的一些错误代码处理方式:

<code>
function showError(error){
   switch(error.code) { 
       case error.PERMISSION_DENIED: alert("定位失败,用户拒绝请求地理定位"); 
       break; 
       case error.POSITION_UNAVAILABLE: alert("定位失败,位置信息是不可用");
       break; 
       case error.TIMEOUT: alert("定位失败,请求获取用户位置超时");
       break; 
      case error.UNKNOWN_ERROR: alert("定位失败,定位系统失效"); 
      break; 
   } 
}
</code>
我们再来看函数showPosition(),调用coords的latitude和longitude即可获取到用户的纬度和经度。
<code>
function showPosition(position){ 
    var lat = position.coords.latitude; //纬度 
    var lag = position.coords.longitude; //经度 
    alert('纬度:'+lat+',经度:'+lag); 
} 
</code> 

 利用百度地图和谷歌地图接口获取用户地址

上面我们了解了HTML5的Geolocation可以获取用户的经纬度,那么我们要做的是需要把抽象的经纬度转成可读的有意义的真正的用户地理位置信息。幸运的是百度地图和谷歌地图等提供了这方面的接口,我们只需要将HTML5获取到的经纬度信息传给地图接口,则会返回用户所在的地理位置,包括省市区信息,甚至有街道、门牌号等详细的地理位置信息。

我们首先在页面定义要展示地理位置的div,分别定义id#baidu_geo和id#google_geo。我们只需修改关键函数showPosition()。先来看百度地图接口交互,我们将经纬度信息通过Ajax方式发送给百度地图接口,接口会返回相应的省市区街道信息。百度地图接口返回的是一串JSON数据,我们可以根据需求将需要的信息展示给div#baidu_geo。注意这里用到了jQuery库,需要先加载jQuery库文件。

<code>
function showPosition(position){ 
   var latlon = position.coords.latitude+','+position.coords.longitude; //baidu
   var url = "http://api.map.baidu.com/geocoder/v2/?ak=C93b5178d7a8ebdb830b9b557abce78b&callback=renderReverse&location="+latlon+"&output=json&pois=0"; 
    $.ajax({ type: "GET", dataType: "jsonp", url: url, beforeSend: function(){ 
            $("#baidu_geo").html('正在定位...');
        }, success: function (json) { 
            if(json.status==0){ 
                 $("#baidu_geo").html(json.result.formatted_address);
            } 
       }, error: function (XMLHttpRequest, textStatus, errorThrown) { 
           $("#baidu_geo").html(latlon+"地址位置获取失败"); 
       } 
    }); 
}); 
</code>

以上的代码分别将百度地图接口整合到函数showPosition()中,我们可以根据实际情况进行调用。当然这只是一个简单的应用,我们可以根据这个简单的示例开发出很多复杂的应用。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
AngularJS进阶(二十)HTML5实现获取地理位置信息并定位功能
如何在百度地图上精确定位自己的地理位置
如何调用百度地图API
全了!23个地理专业网站,让课堂炫酷起来!
Python实现经纬度换算 计算两地距离 地理可视化(代码全分享)
【百度地图API】如何制作公交线路的搜索?如331路
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服