首页 > 代码库 > 手机端APP/ 手机浏览器 Html5自动定位城市

手机端APP/ 手机浏览器 Html5自动定位城市

第一步:简单了解

html5为window.navigator提供了geolocation属性,用于获取基于浏览器的当前用户地理位置。

window.navigator.geolocation提供了3个方法分别是:

void getCurrentPosition(onSuccess,onError,options);//获取用户当前位置

int watchCurrentPosition(onSuccess,onError,options);//持续获取当前用户位置

void clearWatch(watchId);//watchId 为watchCurrentPosition返回的值//取消监控

 

支持参数://options可以不写,为默认即可

options = {      enableHighAccuracy,//boolean 是否要求高精度的地理信息      timeout,//获取信息的超时限制      maximumAge//对地理信息进行缓存的时间 }

 

 

第二步:Html 5 geolocation 实例代码如下:

$(document).bind("pageinit", function (event, data) {   

    getLocation();

});

function getLocation() {

    if (navigator.geolocation) {    

        navigator.geolocation.getCurrentPosition(

                                 showPosition,//成功回调函数

                                getPositionError,//失败回调函数

                                    {//options参数配置

                                     enableHighAccuracy:true,//boolean 是否要求高精度的地理信息 

                                      timeout:2000, 

                                        maximumAge:36000

                                    }

);

    }

    else {  //不支持,就拉倒吧。 }

}

//失败回调函数:

function getPositionError(error){  

    switch(error.code){  

        case error.TIMEOUT:  

          //  alert("连接超时,请重试");  

            break;  

        case error.PERMISSION_DENIED:  

            //alert("您拒绝了使用位置共享服务,查询已取消");  

            break;  

        case error.POSITION_UNAVAILABLE:  

            //alert("亲爱的火星网友,非常抱歉,我们暂时无法为您所在的星球提供位置服务");  

            break;  

    }  

}  

//成功回调函数:

function showPosition(position) {

//内容在下面说。

}

成功返回的结果说明position:

当成功获取地理位置信息时候,onsuccess方法中会返回position对象,通过这个对象可以获取地理位置的相关信息,包括:

 position对象的属性:

latitude,//纬度

longitude,//经度

altitude,//海拔高度

accuracy,//获取纬度或者经度的精度

altitudeAccurancy,//海拔高度的精度

heading,//设备前景方向。正北方向的顺时针旋转角

speed,//设备的前进速度 m/s

timestamp,//获取地理位置信息时候的时间

 

第三步:根据经纬度 调用google接口获取

 

googlemap.js:

window.google = window.google || {}; google.maps = google.maps || {}; (function() {     function getScript(src) {     document.write(‘<‘ + ‘script src="http://www.mamicode.com/‘ + src + ‘"‘ +                    ‘ type="text/javascript"><‘ + ‘/script>‘);   }     var modules = google.maps.modules = {};   google.maps.__gjsload__ = function(name, text) {     modules[name] = text;   };     google.maps.Load = function(apiLoad) {     delete google.maps.Load;     apiLoad([0.009999999776482582,[[["http://mt0.googleapis.com/vt?lyrs=m@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026","http://mt1.googleapis.com/vt?lyrs=m@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026"],null,null,null,null,"m@262000000",["https://mts0.google.com/vt?lyrs=m@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026","https://mts1.google.com/vt?lyrs=m@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026"]],[["http://khm0.googleapis.com/kh?v=150\u0026hl=zh-CN\u0026","http://khm1.googleapis.com/kh?v=150\u0026hl=zh-CN\u0026"],null,null,null,1,"150",["https://khms0.google.com/kh?v=150\u0026hl=zh-CN\u0026","https://khms1.google.com/kh?v=150\u0026hl=zh-CN\u0026"]],[["http://mt0.googleapis.com/vt?lyrs=h@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026","http://mt1.googleapis.com/vt?lyrs=h@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026"],null,null,null,null,"h@262000000",["https://mts0.google.com/vt?lyrs=h@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026","https://mts1.google.com/vt?lyrs=h@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026"]],[["http://mt0.googleapis.com/vt?lyrs=t@132,r@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026","http://mt1.googleapis.com/vt?lyrs=t@132,r@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026"],null,null,null,null,"t@132,r@262000000",["https://mts0.google.com/vt?lyrs=t@132,r@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026","https://mts1.google.com/vt?lyrs=t@132,r@262000000\u0026src=http://www.mamicode.com/api/u0026hl=zh-CN/u0026"]],null,null,[["http://cbk0.googleapis.com/cbk?","http://cbk1.googleapis.com/cbk?"]],[["http://khm0.googleapis.com/kh?v=84\u0026hl=zh-CN\u0026","http://khm1.googleapis.com/kh?v=84\u0026hl=zh-CN\u0026"],null,null,null,null,"84",["https://khms0.google.com/kh?v=84\u0026hl=zh-CN\u0026","https://khms1.google.com/kh?v=84\u0026hl=zh-CN\u0026"]],[["http://mt0.googleapis.com/mapslt?hl=zh-CN\u0026","http://mt1.googleapis.com/mapslt?hl=zh-CN\u0026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=zh-CN\u0026","http://mt1.googleapis.com/mapslt/ft?hl=zh-CN\u0026"]],[["http://mt0.googleapis.com/vt?hl=zh-CN\u0026","http://mt1.googleapis.com/vt?hl=zh-CN\u0026"]],[["http://mt0.googleapis.com/mapslt/loom?hl=zh-CN\u0026","http://mt1.googleapis.com/mapslt/loom?hl=zh-CN\u0026"]],[["https://mts0.googleapis.com/mapslt?hl=zh-CN\u0026","https://mts1.googleapis.com/mapslt?hl=zh-CN\u0026"]],[["https://mts0.googleapis.com/mapslt/ft?hl=zh-CN\u0026","https://mts1.googleapis.com/mapslt/ft?hl=zh-CN\u0026"]],[["https://mts0.googleapis.com/mapslt/loom?hl=zh-CN\u0026","https://mts1.googleapis.com/mapslt/loom?hl=zh-CN\u0026"]]],["zh-CN","US",null,0,null,null,"http://maps.gstatic.com/mapfiles/","http://csi.gstatic.com","https://maps.googleapis.com","http://maps.googleapis.com"],["http://maps.gstatic.com/intl/zh_cn/mapfiles/api-3/17/0","3.17.0"],[3278673121],1,null,null,null,null,0,"",null,null,0,"http://khm.googleapis.com/mz?v=150\u0026",null,"https://earthbuilder.googleapis.com","https://earthbuilder.googleapis.com",null,"http://mt.googleapis.com/vt/icon",[["http://mt0.googleapis.com/vt","http://mt1.googleapis.com/vt"],["https://mts0.googleapis.com/vt","https://mts1.googleapis.com/vt"],[null,[[0,"m",262000000]],[null,"zh-CN","US",null,18,null,null,null,null,null,null,[[47],[37,[["smartmaps"]]]]],0],[null,[[0,"m",262000000]],[null,"zh-CN","US",null,18,null,null,null,null,null,null,[[47],[37,[["smartmaps"]]]]],3],[null,[[0,"m",262000000]],[null,"zh-CN","US",null,18,null,null,null,null,null,null,[[50],[37,[["smartmaps"]]]]],0],[null,[[0,"m",262000000]],[null,"zh-CN","US",null,18,null,null,null,null,null,null,[[50],[37,[["smartmaps"]]]]],3],[null,[[4,"t",132],[0,"r",132000000]],[null,"zh-CN","US",null,18,null,null,null,null,null,null,[[5],[37,[["smartmaps"]]]]],0],[null,[[4,"t",132],[0,"r",132000000]],[null,"zh-CN","US",null,18,null,null,null,null,null,null,[[5],[37,[["smartmaps"]]]]],3],[null,null,[null,"zh-CN","US",null,18],0],[null,null,[null,"zh-CN","US",null,18],3],[null,null,[null,"zh-CN","US",null,18],6],[null,null,[null,"zh-CN","US",null,18],0],["https://mts0.google.com/vt","https://mts1.google.com/vt"],"/maps/vt"],2,500,["http://geo0.ggpht.com/cbk?cb_client=maps_sv.uv_api_demo","http://www.gstatic.com/landmark/tour","http://www.gstatic.com/landmark/config","/maps/preview/reveal?authuser=0","/maps/preview/log204","/gen204?tbm=map","http://static.panoramio.com.storage.googleapis.com/photos/"]], loadScriptTime);   };   var loadScriptTime = (new Date).getTime();   getScript("http://maps.gstatic.com/intl/zh_cn/mapfiles/api-3/17/0/main.js"); })();

 

成功反馈结果

function showPosition(position) {

     var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); //初始化一个google的经纬度对象    

     var geocoder = new   google.maps.Geocoder();

     geocoder.geocode({ ‘latLng‘: latlng }, function (results, status) {

        if (status == google.maps.GeocoderStatus.OK) {            

            alter(results[0].address_components[2].short_name);  //定位城市   

        }        

        else

    {      

        alert("获取位置失败");        

   }    

    });

}