这是首页,点击进入商铺列表页面
请在手机上预览效果:
地址:http://www.10180.top/static/baidu/list.php
或扫下面二维码:
流程:
1. 提前录入商家店铺数据,(保存在数据库中),店铺名称,电话,地址,经纬度
//模拟店铺数据
$shop_data=array(
array(
'name'=>'店铺1',
'tel'=>'13311111111',
'address'=>'福建省漳州市漳州东站店铺',
'lng'=>'117.751319',
'lat'=>'24.570865'
),
array(
'name'=>'店铺2',
'tel'=>'13322222222',
'address'=>'北京市天安门店铺',
'lng'=>'116.403968',
'lat'=>'39.915281'
),
array(
'name'=>'店铺3',
'tel'=>'13333333333',
'address'=>'陕西省西安市西安北站店铺',
'lng'=>'108.944835',
'lat'=>'34.382505'
),
array(
'name'=>'店铺4',
'tel'=>'13344444444',
'address'=>'陕西省西安市火车站店铺',
'lng'=>'108.97085',
'lat'=>'34.28455'
)
);
2. 用户打开页面时:获取用户位置,经纬度,计算与商家店铺之间的距离
利用客户的经纬度,与,店铺的经纬度,计算两者距离,即地球,球面上两点之间的弧线长度
//三个函数
function GetDistance($lat1, $lng1, $lat2, $lng2)
{
$EARTH_RADIUS = 6378.137; //地球半径km
$radLat1 = deg2rad($lat1);
$radLat2 = deg2rad($lat2);
$a = $radLat1 - $radLat2;
$b = deg2rad($lng1) - deg2rad($lng2);
$s = 2 * sin(sqrt(pow(sin($a/2),2) + cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
$s = $s *$EARTH_RADIUS;
$s = round($s * 10000) / 10000;
return $s;
}
function formatDistance($km)
{
if($km < 1){
return intval($km * 1000).'m';
}
if($km >= 1){
return intval($km).'km';
}
return $km;
}
function distance($lat1,$lng1,$lat2, $lng2)
{
$km=GetDistance($lat1, $lng1, $lat2, $lng2);
return formatDistance($km);
}
//遍历店铺数据
$str='您的坐标:('.$user_lng.','.$user_lat.')
';
foreach($shop_data as $k=>$v){
$juli=distance($user_lat,$user_lng,$v['lat'],$v['lng']);
$str.='名称:'.$v['name'].'
电话:'.$v['tel'].'
地址:'.$v['address'].'
距离:'.$juli.'
';
}
3. 可以提示用户最近的店铺位置在哪儿?或者显示所有店铺地址与位置~