最近做的一个项目是汽车网和支付宝合作的一个抢红包项目,分为线上扫码和线下扫码两个。
线上扫码允许用户在任何地方进行扫码,然后领取红包;线下扫码必须要求用户到经销商店里面,才可以进行扫码领取红包。
领取红包和优惠券,调用接口时,都需要参数经销商code和经销商名称,所以我们使用了根据经纬度定位来返回经销商的信息。
线上和线下用的是不同的接口:线上扫码的接口可以返回用户所在地周围10公里之内(距离用户)的经销商,如果10公里之内没有经销商,那么就返回用户所在城市的距离用户最近的经销商。线下扫码的接口可以返回1公里之内的经销商。
获取用户所在城市:
$.getJSON('//whois.pconline.com.cn/ipJson.jsp?callback=?',function(obj){
main.city2 = obj.city;
});
线上扫码获取经销商(参数需要加上之前获取的城市):
getLocation:function(){
var map, geolocation;
//加载地图,调用浏览器定位服务
map = new AMap.Map('container', {
resizeEnable: true
});
map.plugin('AMap.Geolocation', function() {
geolocation = new AMap.Geolocation({
enableHighAccuracy: true,//是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:无穷大
buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
buttonPosition:'RB'
});
map.addControl(geolocation);
geolocation.getCurrentPosition();
AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息
});
//解析定位结果
function onComplete(data) {
main.x=data.position.getLng();
main.y= data.position.getLat();
//alert("'经度"+ + main.x+"纬度:"+ main.y)
// main.x=121.446832;
// main.y=30.933954;
var url ="https://cat.pangku.com/activity/lbs/recent?key=yjlbs180831&location="+main.x+','+main.y+"&city="+main.city2;
$.get(url,function(res){
if(res.code == 0){
main.dealerCode = res.data.merchant_id;
main.dealer = res.data.name;
main.city = res.data.city;
main.getUserInfo();
}else{
alert(res.msg);
}
});
}
//解析定位错误信息
function onError(data) {
alert('定位失败')
}
},
线下代码获取经销商:
getLocation:function(){
var map, geolocation;
//加载地图,调用浏览器定位服务
map = new AMap.Map('container', {
resizeEnable: true
});
map.plugin('AMap.Geolocation', function() {
geolocation = new AMap.Geolocation({
enableHighAccuracy: true,//是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:无穷大
buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
buttonPosition:'RB'
});
map.addControl(geolocation);
geolocation.getCurrentPosition();
AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息
});
//解析定位结果
function onComplete(data) {
main.x=data.position.getLng();
main.y= data.position.getLat();
// alert("'经度"+ + main.x+"纬度:"+ main.y)
// main.x=116.896505;
// main.y=38.287724;
var url ="https://cat.pangku.com/activity/lbs/is_exist?key=yjlbs180831&location="+main.x+','+main.y;
$.get(url,function(res){
if(res.code == 0){
main.dealerCode = res.data.merchant_id;
main.dealer = res.data.name;
main.city = res.data.city;
main.getUserInfo();
}else{
alert(res.msg);
}
});
}
//解析定位错误信息
function onError(data) {
alert('定位失败')
}
},