//設置城市:根據百度地圖接口 function setCityToSession(n){ $.ajax({ url : "/getCity", cache : false, dataType : "json", success : function(data) { // 將商品數據加載到頁面 if (data==""|| data==null) { if(navigator.geolocation){ navigator.geolocation.getCurrentPosition( function(p){ var latitude=p.coords.latitude;//獲取座標點緯度 var longitude=p.coords.longitude;//獲取座標點經度 //以指定的經度與緯度建立一個座標點 var po=new BMap.Point(longitude,latitude); //建立一個地理解析器 var geocoder=new BMap.Geocoder(); //獲取位置 geocoder.getLocation(po,function(rs){ //獲取地理組件 var addComp=rs.addressComponents; //獲取省份 var province=addComp.province; //獲取城市 var city=addComp.city; //獲取區縣 var district=addComp.district; //獲取街道 var street=addComp.street; //獲取街道號 var streetNumber=addComp.streetNumber; //$("p").append(province+city+district+street+streetNumber);//將獲取到的信息輸出到頁面 $.ajax({ url : "/setCity", cache : false, dataType : "json", data : { city :city }, success : function(data) { } }); }); },function(e){ /* switch (e.code) { case e.TIMEOUT: alert("定位失敗,請求獲取用戶位置超時"); break; case e.PERMISSION_DENIED: alert("您拒絕了使用位置服務功能,查詢已取消"); break; case e.POSITION_UNAVAILABLE: alert("抱歉,暫時沒法爲您所在的星球提供位置服務"); break; case e.UNKNOWN_ERROR: alert("發生一個位置錯誤"); break; }*/ if(n==0){ setCityToSession(1); } },{ //指示瀏覽器獲取高精度的位置,默認false enableHighAcuracy: true, //指定獲取地理位置的超時時間,默認不限時,單位爲毫秒 timeout:10000, //最長有效期,在重複獲取地理位置時,此參數指定多久再次獲取位置 maximumAge:2000 } ); }else{ //alert("不支持"); } } } }); } setCityToSession(0); @RequestMapping("/getCity") public void getCity(HttpServletRequest req, HttpServletResponse res){ try{ Object city=req.getSession().getAttribute(YygConstants.KEY_SESSION_CITY); ResponseOutputUtils.renderJson(res, city); }catch(Exception ex){ ResponseOutputUtils.renderJson(res, ""); logger.error(ex.getMessage(), ex); } } @RequestMapping("/setCity") public void setCity(HttpServletRequest req, HttpServletResponse res,String city){ try{ req.getSession().setAttribute(YygConstants.KEY_SESSION_CITY,city); ResponseOutputUtils.renderJson(res, city); }catch(Exception ex){ ResponseOutputUtils.renderJson(res, ""); logger.error(ex.getMessage(), ex); } }