參考鏈接:https://cnodejs.org/topic/564c0a27e4766d487f6fe38d
今天總算解決了定位的問題铝阐,記錄一下吧妖滔。要不然以后用到了又給忘了昼丑,之前用的高德地圖定位的帘饶,死活都整出來辩尊,然后就換成百度了,但是后臺(tái)用的是高德,百度和高德不屬于一個(gè)坐標(biāo)體系,需要進(jìn)行轉(zhuǎn)換纸泄,轉(zhuǎn)換公式也是百度的,不過很有用腰素,原文把PI寫成了Pi,是作者的筆誤吧聘裁,它是Math對(duì)象的屬性,返回圓周率(約等于3.14159)弓千『獗悖可以參考javascript菜鳥教程,里面有其他屬性的介紹计呈。下面是轉(zhuǎn)換公式:
定位的時(shí)候要用到城市的citycode砰诵,用百度地圖沒有找到這個(gè)屬性,然后用的是高德(是不是很麻煩鞍葡浴)用高德地圖的一個(gè)getLocalCity()插件獲取當(dāng)前城市的citycode茁彭,代碼如下:
用百度獲取當(dāng)前位置的經(jīng)緯度,,代碼如下:
//獲取當(dāng)前位置
var geolocation = new BMap.Geolocation();//創(chuàng)建查詢對(duì)象扶歪,
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
mk = new BMap.Marker(r.point);
getAddress(r.point);
}else {
alert('failed'+this.getStatus());
}
});
//獲取地址信息理肺,設(shè)置地址label
function getAddress(point){
var gc = new BMap.Geocoder();
gc.getLocation(point, function(rs){
var addComp = rs.addressComponents;
var address =addComp.province +addComp.city +addComp.district +addComp.street +addComp.streetNumber;//獲取地址
var cityinfo = addComp.city;
var flag = false;
cityLat=bd_decrypt(point.lng,point.lat).gg_lat;
cityLng=bd_decrypt(point.lng,point.lat).gg_lon;
storage["cityLat"]=bd_decrypt(point.lng,point.lat).gg_lat;
storage["cityLng"]=bd_decrypt(point.lng,point.lat).gg_lon;
storage["regionName"]=cityinfo;
$.each(cityMsg, function(index,item) {
if (item.id==cityadcode) {
flag = true;
return ;
}
});
if(flag){
document.getElementById('vv').innerHTML =cityinfo;
}else{
document.getElementById('vv').innerHTML =cityMsg[0].name;
cityadcode=cityMsg[0].id;
}
$('#vvcode').val(cityadcode)
getbanner()
getWeather();
getOil();
getactivitie();
getcontents();
getHotmerchants(pageNum)
});
}
}
今天又用了一個(gè)新東西,就是sessionStorage,它終于派上用場(chǎng)了善镰,用法參考菜鳥教程
這個(gè)sessionStorage解決的問題是妹萨,當(dāng)我從新打開項(xiàng)目主頁的時(shí)候,就會(huì)發(fā)起自動(dòng)定位炫欺,因?yàn)樗拇鎯?chǔ)時(shí)間是有限的乎完,所以我在公共頁面里面寫了一個(gè)全局變量,只要項(xiàng)目在運(yùn)行品洛,它的值就會(huì)一直在變树姨,當(dāng)項(xiàng)目關(guān)閉之后摩桶,它的值就會(huì)從新開始計(jì)算,所以我在首頁做個(gè)判斷帽揪,只要值為1硝清,定位就重新定位,存儲(chǔ)的城市code就會(huì)重新刷新转晰。