工作日志–定位重写E9
em.getLocation({
locationType: '',
timeout: 2,
success: function (res) {
alert(JSON.stringify(res))
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
地图api
//高德api
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=4cb2435c46a93df6cca74737a1d5d269&plugin=AMap.Geocoder"></script>
//百度api
<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=3c7ce3d96104cca8edbf4f7ec3758ae2"></script>
重写方法
<script>
define("mApi/lbs4amap", ["mUtil", "amap"], function(mUtil) {
var callbackStack = [];
return {
getCurrPosition: function(callback, type){
callbackStack.push(callback);
function transformLL(longitude, latitude){
var parseResult = function(addr, addrComp){
callbackStack.forEach(function(cb) {
cb && cb({
status: "1",
errMsg: "",
lng: longitude,
lat: latitude,
addr: addr,
province: addrComp.province,
city: addrComp.city,
district: addrComp.district,
street: addrComp.street,
streetNumber: addrComp.streetNumber
});
});
callbackStack = [];
};
AMap.plugin('AMap.Geocoder', function() {
var geocoder = new AMap.Geocoder();
geocoder.getAddress([longitude, latitude], function(status, rs) {
rs = rs.regeocode || {};
parseResult(rs.formattedAddress, rs.addressComponent || {});
})
});
}
if(mUtil.checkEmpJsApi("getLocation")){
AMap.plugin('AMap.Geolocation', function() {
var geolocation = new AMap.Geolocation({
enableHighAccuracy: true
});
geolocation.getCurrentPosition(function(status,result){
if(status === 'complete'){
transformLL(result.position.P, result.position.O);
}else{
mUtil.console.error(result.message);
}
});
});
}else if(mUtil.runtime.isEmobile6()){
window.getLBSResult = function(result){
var arr = result.split(",");
var longitude = arr[2];
var latitude = arr[1];
transformLL(longitude, latitude);
};
location = "emobile:gps:getLBSResult";
}else if(typeof(eb_GetLocation) != "undefined" && mUtil.isFunction(eb_GetLocation)){
window.getLBSResult = function(longitude, latitude){
transformLL(longitude, latitude);
};
eb_GetLocation("getLBSResult");
}else{
AMap.plugin('AMap.Geolocation', function() {
var geolocation = new AMap.Geolocation({
enableHighAccuracy: true
});
geolocation.getCurrentPosition(function(status,result){
if(status === 'complete'){
transformLL(result.position.P, result.position.O);
}else{
mUtil.console.error(result.message);
}
});
});
}
}
};
});
</script>
双重验证
top.window._p_wx_getLBSResult = function (longitude, latitude) {
var map = new BMap.Map("allmap");
var point = new BMap.Point(longitude,latitude);
var convertor = new BMap.Convertor();
var geoc = new BMap.Geocoder();
geoc.getLocation(point, function(rs){
//百度api解析
var addr = rs.address;
if(addr){
//alert("111"+addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
var result2 = {};
result2["status"] = "1";
result2["errMsg"] = ""; //错误信息
result2["lng"] = point.lng; //精度
result2["lat"] = point.lat; //纬度
result2["addr"] = addr; //中文地址
alert(JSON.stringify(result2));
cbFunction(result2);
}else{
//高德api解析
AMap.plugin('AMap.Geocoder', function() {
var geocoder = new AMap.Geocoder({
radius: 1000, //范围,默认:500
extensions:'base'
});
//地理编码,返回地理编码结果
var lnglat = [point.lng,point.lat];
geocoder.getAddress(lnglat , function(status, result) {
if (status === 'complete' && result.info === 'OK') {
result = result.regeocode.addressComponent;
var addr = result.province + result.city + result.district + result.street + result.streetNumber;
var result2 = {};
result2["status"] = "1";
result2["errMsg"] = ""; //错误信息
result2["lng"] = point.lng; //精度
result2["lat"] = point.lat; //纬度
result2["addr"] = addr; //中文地址
result2["province"] = result.province; //省份
result2["city"] = result.city; //城市
result2["district"] = result.district; //区
result2["street"] = result.street; //街道
result2["streetNumber"] = result.streetNumber; //街道号码
cbFunction(result2);
}else{
alert("高德api百度api都解析失败!请联系管理员!");
}
});
});
}
});
};
```