php获取高德当前位置,开源一个高德地图地理位置获取API

/***

*

#–地图位置计算类库

$ipanying = new ipanying(); //实例化地图类库

#–构造商家数据坐标集

$data =array(

0 =>array(

‘mid’=>’111’,

‘lng’=>’111.111’,

‘lat’=>’22.22’

),

1 =>array(

‘mid’=>’112’,

‘lng’=>’112.112’,

‘lat’=>’23.23’

)

);

#–数据回调URL,把计算出的用户与商家的实际距离进行AJAX请求该URL

$return_url = ‘http://’.$_SERVER[‘HTTP_HOST’].’/ipanying.php’;

echo $ipanyingmap->getUserDir($data, $return_url, ‘color:red’);

*/

class ipanying{

/***

*

* @param unknown $ipanying #–商家地理位置二维数组

* @param unknown $return_url #–计算出的距离的数据AJAX请求URL

* @param unknown $style #–INPUT样式

* @param string $text #–显示的文字,比如没获取之前可以说获取位置,获取成功之后可以是更新位置等

* @param string $key #–KEY密钥

* @return string #–返回一个JS代码的页面字符串

* 注:在return接收页,lng,lat实际为用户的坐标数据,type=’dir’,

* 获取数据之后,销毁POST的lng,lat,type

*/

function getUserDir($ipanying,$return_url,$style,$text=’获取位置’,$key=’您的KEY值’){

$html='’;

$html.=”

var usermap, geolocation;

var ipanyingmap_url='”.$return_url.”‘;

function getAddress(){

usermap = new AMap.Map(‘container-ipanying’, {

resizeEnable: true

});

usermap.plugin(‘AMap.Geolocation’, function() {

var geolocation = new AMap.Geolocation({

enableHighAccuracy: true,

timeout: 10000,

buttonOffset: new AMap.Pixel(10, 20),

zoomToAccuracy: true,

buttonPosition:’RB’

});

usermap.addControl(geolocation);

geolocation.getCurrentPosition();

AMap.event.addListener(geolocation, ‘complete’, onComplete);

});

}

//解析定位结果

function onComplete(data) {

var lng = data.position.getLng();

var lat = data.position.getLat();

if(lng==null || lng==undefined || lat==null || lat==undefined){

alert(‘用户坐标为空,无法计算’);

return false;

}

var ipanying = new Array();

“;

#—循环输出商家数据到JS

for($k=0;$k

$html.=”ipanying[$k]=new Array();

ipanying[$k][‘mid’]=”.$ipanying[$k][‘mid’].”;

ipanying[$k][‘dir’] = [“.$ipanying[$k][‘lng’].”,”.$ipanying[$k][‘lat’].”];”;

}

$html.=”

shangjiamaps(ipanying,lng,lat);

} //onComplete结束

function shangjiamaps(lnglats,xdir,ydir){ //位置计算方法

var str =’lng=’+xdir+’&lat=’+ydir;

for (var i = 0; i < lnglats.length; i++) {

var marker = new AMap.Marker({

position: lnglats[i],

//map: map

});

if(xdir == ” || xdir == undefined || xdir==null || ydir == ” || ydir == undefined || ydir==null){

var isadd =’nulls’;

} else {

var islnglat = new AMap.LngLat(xdir,ydir);

var cl = islnglat.distance(lnglats[i][‘dir’]);

var isadd = cl.toFixed(0);

}

str +=’&’+lnglats[i][‘mid’]+’=’+isadd;

//alert(‘距离商家ID’+lnglats[i][‘mid’]+’有’+isadd+’米’);

}

qingxinzui_alert(ipanyingmap_url,str,’dir’);

//alert(str);

}

”;

$html.='’;

return $html;

}

}

if(isset($_POST[‘type’]) && $_POST[‘type’]==’dir’){

//处理回调

unset($_POST[‘type’]; //销毁类型参数

$userlng=$_POST[‘lng’]; //提取用户经度

$userlat=$_POST[‘lat’]; //提取用户纬度

//在这里获取的用户经纬度信息自行保留至SESSION或者COOKIE或者SQL

unset($_POST[‘lng’]); //销毁POST经度

unset($_POST[‘lat’]); //销毁POST纬度

$ipanying = $_POST; //数据给予数组

$text = ”;

foreach($ipanying as $key => $value){

$text.=’用户距离商家ID’.$key.’的直线距离=’.$value.’米
’;

}

}

请尊重开源,转发请注明出处!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值