var storecity = '{$_JOYEGB[ipstore][city]}';
var storelng = "{$storelng}"; //经度
var storelat = "{$storelat}"; //纬度
var storename = "{$storename}"; //名称
var storeid = "{$storeid}"; //id
var storeoutsitedistance = "{$storeoutsitedistance}"; //送餐距离
var storeoutsitetime = "{$storeoutsitetime}"; //送餐时间
var storepreparetime = "{$storepreparetime}"; //送餐时间
var storelngstr = storelng.substring(0,storelng.length-1).split("|"); //将获取来的字符串使用"|"切割成数组
var storelatstr = storelat.substring(0,storelat.length-1).split("|");
var storenamestr = storename.substring(0,storename.length-1).split("|");
var storeidstr = storeid.substring(0,storeid.length-1).split("|");
var storeoutsitedistancestr = storeoutsitedistance.substring(0,storeoutsitedistance.length-1).split("|");
var storeoutsitetimestr = storeoutsitetime.substring(0,storeoutsitetime.length-1).split("|");
var storepreparetimestr = storepreparetime.substring(0,storepreparetime.length-1).split("|");
var map,marker,myGeo,myIcon,storeIcon,storePoint,storeMarker,polyline,pts,driving,searchIndex,minVal,minPoint,storePoints,fixedPoint,distance,outsitetime,arraytime;
var getDistanceValue;
function addaddress(tar){
if(map)
return false;
$(tar).hide();
$(tar).prev().show();
$(tar).prev().prev().show();
$(tar).next().show();
$(tar).next().next().show();
$(tar).prev().unbind('keyup');
$(tar).prev().unbind('blur');
$(tar).prev().val(storecity);
$(tar).prev().keyup(
function(){
if(myGeo){
$('#distance_info').html('');
$('#distance_inp').val('');
myGeo.getPoint($(tar).prev().val(), function(point){
if (point) {
map.centerAndZoom(point, 16);
addmarker(point,$(tar).prev(),$(tar).next(),true);
}
}, $(tar).prev().val());
}
}
);
$(tar).prev().blur(
function(){
if(myGeo){
myGeo.getPoint($(tar).prev().val(), function(point){
if (point) {
map.centerAndZoom(point, 16);
addmarker(point,$(tar).prev(),storePoints,true);
}
}, $(tar).prev().val());
}
}
);
myIcon = new BMap.Icon( 'image/Bubble_me.png',new BMap.Size(30, 48),{anchor: new BMap.Size(15, 48)});
storeIcon = new BMap.Icon( 'image/Bubble_small.png',new BMap.Size(30, 48),{anchor: new BMap.Size(15, 48)});
map = new BMap.Map('MAPCONTENT');
driving = new BMap.DrivingRoute(map); //创建驾车实
myGeo = new BMap.Geocoder();
searchIndex = 0;
var mkr = null;
var markers = [];
storePoints = [];
for(i=0;i<storelngstr.length;i++){
var storePoint = new BMap.Point(storelngstr[i], storelatstr[i]);
storePoint.name = storenamestr[i];
storePoint.id = storeidstr[i];
storePoint.outsitedistance = storeoutsitedistancestr[i];
storePoint.outsitetime = storeoutsitetimestr[i];
storePoint.preparetime = storepreparetimestr[i];
storePoints.push(storePoint);
mkr = new BMap.Marker(storePoint, {title: storenamestr[i]});
map.addOverlay(mkr);
var label = new BMap.Label(storenamestr[i],{offset:new BMap.Size(20,-10)});
mkr.setLabel(label);
markers.push(mkr);
map.centerAndZoom(storePoint, 16);
}
driving.setSearchCompleteCallback(function(rs){
searchIndex++;
pts = driving.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组
getDistanceValue = driving.getResults().getPlan(0).getDistance(false);
getDistance = driving.getResults().getPlan(0).getDistance(true);
if(!minVal || minVal > getDistanceValue){
minVal = getDistanceValue;
minPoint = (rs.getStart()).point;
fixedPoint = pts;
distance = getDistance;
}
if( searchIndex == storePoints.length){
var st = getStoreInfo(minPoint);
if(minVal < st.outsitedistance){
arraytime = Math.ceil(minVal / 1000)*parseFloat(st.outsitetime) +parseFloat(st.preparetime);
output = "<b style='color:red;'>" +distance +"</b>"; //获取距离
$('#distance_info').html(' 距离'+st.name+':'+ output+'  下单后预计送达时间:<b style="color:red";>'+arraytime+'</b>分钟');
$('#distance_inp').val(minVal);
$('#storeid').val(st.id);
if(polyline) map.removeOverlay(polyline);
if(fixedPoint){
polyline = new BMap.Polyline(fixedPoint);
map.addOverlay(polyline);
}
}else{
alert("对不起,您当前地址超出"+st.name+"送餐范围!");
$('#distance_info').html('');
$('#distance_inp').val('');
}
minVal = null
searchIndex = 0;
}
});
myGeo.getPoint(storecity, function(point){
if (point) {
marker = new BMap.Marker(point,{icon:myIcon});
map.addOverlay(marker);
addmarker(point,$(tar).prev(),storePoints);
$('input[name=lng]').val(point.lng);
$('input[name=lat]').val(point.lat);
setTimeout(function(){
map.panTo(point);
marker.setAnimation(BMAP_ANIMATION_BOUNCE);
},3000);
}
}, storecity);
map.addEventListener("click", function(e){
addmarker(e.point,$(tar).prev(),storePoints);
})
map.enableScrollWheelZoom(); // 开启鼠标滚轮缩放
map.enableKeyboard(); // 开启键盘控制
map.enableContinuousZoom(); // 开启连续缩放效果
//map.enableInertialDragging(); // 开启惯性拖拽效果
}
function getStoreInfo(pts){
for(var i=0,l=storePoints.length; i<l ; i++){
if(pts.lng == storePoints[i].lng && pts.lat == storePoints[i].lat){
return storePoints[i];
}
}
}
function addmarker(point,input,storePoints,key){
if(marker)
map.removeOverlay(marker);
marker = new BMap.Marker(point,{icon:myIcon});
map.addOverlay(marker);
marker.setAnimation(BMAP_ANIMATION_BOUNCE);
$('input[name=lng]').val(point.lng);
$('input[name=lat]').val(point.lat);
myGeo.getLocation(point, function(rs){
if(input && !key){
var addComp = rs.addressComponents;
input.val(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
}
//三种驾车策略:最少时间,最短距离,避开高速
var routePolicy = [BMAP_DRIVING_POLICY_LEAST_TIME,BMAP_DRIVING_POLICY_LEAST_DISTANCE,BMAP_DRIVING_POLICY_AVOID_HIGHWAYS];
for(i=0;i<storePoints.length;i++){
driving.search(storePoints[i], point,routePolicy[1]);
}
});
}