1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/** * 以下为html5代码,获取地理位置 */ function
getLocation() {
//检查浏览器是否支持地理位置获取
if
(navigator.geolocation) {
//若支持地理位置获取,成功调用showPosition(),失败调用showError
// alert("正在努力获取位置..."); var
config = { enableHighAccuracy: true , timeout: 5000, maximumAge: 30000 };
navigator.geolocation.getCurrentPosition(showPosition, showError, config);
} else
{
//alert("Geolocation is not supported by this browser.");
alert( "定位失败,用户已禁用位置获取权限" );
}
} /** * 获取地址位置成功 */ function
showPosition(position) {
//获得经度纬度
var
x = position.coords.latitude;
var
y = position.coords.longitude;
//配置Baidu Geocoding API
"&callback=renderReverse"
+
"&location="
+ x + ","
+ y +
"&output=json"
+
"&pois=0" ;
$.ajax({
type: "GET" ,
dataType: "jsonp" ,
url: url,
success: function
(json) {
if
(json == null
|| typeof
(json) == "undefined" ) {
return ;
}
if
(json.status != "0" ) {
return ;
}
setAddress(json.result.addressComponent);
},
error: function
(XMLHttpRequest, textStatus, errorThrown) {
alert( "[x:"
+ x + ",y:"
+ y + "]地址位置获取失败,请手动选择地址" );
}
});
} /** * 获取地址位置失败[暂不处理] */ function
showError(error) {
switch
(error.code) {
case
error.PERMISSION_DENIED:
alert( "定位失败,用户拒绝请求地理定位" );
//x.innerHTML = "User denied the request for Geolocation.[用户拒绝请求地理定位]"
break ;
case
error.POSITION_UNAVAILABLE:
alert( "定位失败,位置信息是不可用" );
//x.innerHTML = "Location information is unavailable.[位置信息是不可用]"
break ;
case
error.TIMEOUT:
alert( "定位失败,请求获取用户位置超时" );
//x.innerHTML = "The request to get user location timed out.[请求获取用户位置超时]"
break ;
case
error.UNKNOWN_ERROR:
alert( "定位失败,定位系统失效" );
//x.innerHTML = "An unknown error occurred.[未知错误]"
break ;
}
} /** * 设置地址
*/
function
setAddress(json) {
var
position = document.getElementById( "txtPosition" );
//省
var
province = json.province;
//市
var
city = json.city;
//区
var
district = json.district;
province = province.replace( ‘市‘ , ‘‘ );
position.value = province + ","
+ city + ","
+ district;
position.style.color = ‘black‘ ;
} |