/** * 如下爲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 var url = "http://api.map.baidu.com/geocoder/v2/?ak=C93b5178d7a8ebdb830b9b557abce78b" + "&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'; }