- <html>
- <head>
- <meta charset="UTF-8" />
- <title>js 百度 geolocation 定位当前城市</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
- <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
- <script src="http://api.map.baidu.com/api?v=2.0&ak=abcs"></script>
- <script type="text/javascript">
- var geolocation = new BMap.Geolocation();
- var gc = new BMap.Geocoder();
- geolocation.getCurrentPosition( function(r) { //定位结果对象会传递给r变量
- if(this.getStatus() == BMAP_STATUS_SUCCESS)
- { //通过Geolocation类的getStatus()可以判断是否成功定位。
- var pt = r.point;
- gc.getLocation(pt, function(rs){
- var addComp = rs.addressComponents;
- alert(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber);
- });
- }
- else
- {
- //关于状态码
- //BMAP_STATUS_SUCCESS 检索成功。对应数值“0”。
- //BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。
- //BMAP_STATUS_UNKNOWN_LOCATION 位置结果未知。对应数值“2”。
- //BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。
- //BMAP_STATUS_INVALID_KEY 非法密钥。对应数值“4”。
- //BMAP_STATUS_INVALID_REQUEST 非法请求。对应数值“5”。
- //BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增)
- //BMAP_STATUS_SERVICE_UNAVAILABLE 服务不可用。对应数值“7”。(自 1.1 新增)
- //BMAP_STATUS_TIMEOUT 超时。对应数值“8”。(自 1.1 新增)
- switch( this.getStatus() )
- {
- case 2:
- alert( '位置结果未知 获取位置失败.' );
- break;
- case 3:
- alert( '导航结果未知 获取位置失败..' );
- break;
- case 4:
- alert( '非法密钥 获取位置失败.' );
- break;
- case 5:
- alert( '对不起,非法请求位置 获取位置失败.' );
- break;
- case 6:
- alert( '对不起,当前 没有权限 获取位置失败.' );
- break;
- case 7:
- alert( '对不起,服务不可用 获取位置失败.' );
- break;
- case 8:
- alert( '对不起,请求超时 获取位置失败.' );
- break;
- }
- }
- },
- {enableHighAccuracy: true}
- )
- </script>
- </head>
- <body>
- </body>
- </html>
另附 html5 geolocation 定位( 获取当前经纬度 ):
- <html>
- <head>
- <meta charset="UTF-8" />
- <title>js geolocation 定位当前城市</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
- <script type="text/javascript">
- if (navigator.geolocation)
- {
- navigator.geolocation.getCurrentPosition(
- function( position ) {
- show_msg( position );
- },
- function( err ) {
- switch(error.code)
- {
- case 0:
- alert("尝试获取您的位置信息时发生错误:" + error.message);
- break;
- case 1:
- alert("用户拒绝了获取位置信息请求。");
- break;
- case 2:
- alert("浏览器无法获取您的位置信息:" + error.message);
- break;
- case 3:
- alert("获取您位置信息超时。");
- break;
- }
- }
- )
- }
- else
- alert( '您当前使用的浏览器不支持Geolocation服务' );
- function show_msg( position )
- {
- var lat = position.coords.latitude;
- var lng = position.coords.longitude;
- alert( "您所在的位置: 经度" + lat + ",纬度" + lng );
- if( typeof position.address != "undefined" )
- {
- var country = position.address.country;
- var province = position.address.region;
- var city = position.address.city;
- alert(' 您位于 ' + country + province + '省' + city +'市');
- }
- }
- </script>
- </head>
- <body>
- <p id="geo_loc"><p>
- </body>
- </html>