php计算附近的商家,百度地图根据经纬度计算500米内商家

前台js

var map = new BMap.Map("allmap");

var point = new BMap.Point(116.52785,39.920778);

map.addOverlay(new BMap.Marker(point));

map.centerAndZoom(point,15);

map.enableScrollWheelZoom(); // 启用滚轮放大缩小

var geolocation = new BMap.Geolocation();

geolocation.getCurrentPosition(function(r){

if(this.getStatus() == BMAP_STATUS_SUCCESS){

var mk = new BMap.Marker(r.point);

map.addOverlay(mk);

map.panTo(r.point);

getShop(r.point.lng,r.point.lat);

}else {

alert('failed'+this.getStatus());

}

})

function getShop(a,b){

$.ajax({

url:"getnearshop",

type:"get",

data:{lng:a,lat:b},

dataType:"json",

success:function(data){

for(var i=0;i

(function(i){ //防止循环只显示最后一个结果

var rec = data[i];

var poi = new BMap.Point(rec.position_x,rec.position_y);

var content = '

' +

'地址:'+rec.address+'
电话:'+rec.mobile+'
简介:' +rec.introduction+

'

';

//创建检索信息窗口对象

var searchInfoWindow = new BMapLib.SearchInfoWindow(map, content, {

title  : rec.shop_name,      //标题

width  : 290,             //宽度

height : 105,              //高度

panel  : "panel",         //检索结果面板

enableAutoPan : true,     //自动平移

searchTypes   :[

BMAPLIB_TAB_SEARCH,   //周边检索

BMAPLIB_TAB_TO_HERE,  //到这里去

BMAPLIB_TAB_FROM_HERE //从这里出发

]

});

var marker = new BMap.Marker(poi); //创建marker对象

marker.enableDragging(); //marker可拖拽

marker.addEventListener("click", function(e){

searchInfoWindow.open(marker);

})

map.addOverlay(marker); //在地图中添加marker

//searchInfoWindow.open(marker); //在marker上打开检索信息串口,如果搜索结果多于一个,不要找开,否则可能会出现结果显示会出错

})(i)

}

}

});

}

服务端计算附近500米内商家:

/**

* 地图:搜索附近500内商铺

*/

public function actionGetNearShop(){

$half = 6371;//地球半径,平均半径为6371km

$distance = 0.5;//500米

$lat = $_GET['lat'];//y轴

$lng = $_GET['lng'];//x轴

$dlng =  2 * asin(sin($distance / (2 * $half)) / cos(deg2rad($lat)));

$dlng = rad2deg($dlng);

$dlat = $distance/$half;

$dlat = rad2deg($dlat);

$fourpoint = array(

'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),

'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),

'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),

'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)

);

//从数据库中查询此范围内商铺

$map['_string'] = "y<>0 and y>".$fourpoint['right-bottom']['lat']." and y".$fourpoint['left-top']['lng']." and x

$result = M("shop")->where($map)->select();//echo M("shop")->getLastSql();

print_r($result);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值