PHP计算百度地图两个GPS坐标之间的距离代码

 更新时间:2016年11月25日 15:37  点击:1334
应用百度地图时,我们如何用php计算两个GPS经纬度坐标之间的距离呢?现在我们把函数代码分享给你。

以下是我分享的用PHP计算两个GPS经纬度坐标之间的距离的代码,有需要的朋友可以直接拿去用。

 代码如下 复制代码
/**
 * 计算两个坐标之间的距离(米)
 * @param float $fP1Lat 起点(纬度)
 * @param float $fP1Lon 起点(经度)
 * @param float $fP2Lat 终点(纬度)
 * @param float $fP2Lon 终点(经度)
 * @return int
 */
function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){
    $fEARTH_RADIUS = 6378137;
    //角度换算成弧度
    $fRadLon1 = deg2rad($fP1Lon);
    $fRadLon2 = deg2rad($fP2Lon);
    $fRadLat1 = deg2rad($fP1Lat);
    $fRadLat2 = deg2rad($fP2Lat);
    //计算经纬度的差值
    $fD1 = abs($fRadLat1 - $fRadLat2);
    $fD2 = abs($fRadLon1 - $fRadLon2);
    //距离计算
    $fP = pow(sin($fD1/2), 2) +
          cos($fRadLat1) * cos($fRadLat2) * pow(sin($fD2/2), 2);
    return intval($fEARTH_RADIUS * 2 * asin(sqrt($fP)) + 0.5);
}
/**
 * 百度坐标系转换成标准GPS坐系
 * @param float $lnglat 坐标(如:106.426, 29.553404)
 * @return string 转换后的标准GPS值:
 */
function BD09LLtoWGS84($fLng, $fLat){ // 经度,纬度
    $lnglat = explode(',', $lnglat);
    list($x,$y) = $lnglat;
    $Baidu_Server = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={$x}&y={$y}";
    $result = @file_get_contents($Baidu_Server);
    $json = json_decode($result);
    if($json->error == 0){
        $bx = base64_decode($json->x);
        $by = base64_decode($json->y);
        $GPS_x = 2 * $x - $bx;
        $GPS_y = 2 * $y - $by;
        return $GPS_x.','.$GPS_y;//经度,纬度
    }else
        return $lnglat;
}
下面来看一个php按照权重随机排序数据的例子,希望这个例子能对各位带来一些例子,有需要的进入看看吧。

例子

 

 代码如下 复制代码
<?php  
/** 
 * @param array $weight 权重  例如array('a'=>10,'b'=>20,'c'=>50) 
 * @return string key   键名  
 */ 
function roll($weight = array()) {  
 $roll = rand ( 1, array_sum ( $weight ) );  
 $_tmpW = 0;  
 $rollnum = 0;  
  foreach ( $weight as $k => $v ) {  
  $min = $_tmpW;  
   $_tmpW += $v;  
   $max = $_tmpW;  
   if ($roll > $min && $roll <= $max) {  
    $rollnum = $k;  
    break;  
   }  
 }  
  return $rollnum;  
}  
 
$row=roll(array('a'=>10,'b'=>20,'c'=>50));  
echo $row;  
?>
移动互联网时代,手机站是必须的。以下是本人整理的php获取手机浏览器的信息函数,希望对您开发手机站有所帮助。

此收藏的手机信息函数类有取手机号码,浏览器报头信息,取得手机类型,取得手机IP等功能。

 代码如下 复制代码
<?php
/**
*   类名:   mobile
*   描述:   手机信息类
*   其他:   偶然   编写
*/

class   mobile{
/**
*   函数名称:   getPhoneNumber
*   函数功能:   取手机号
*   输入参数:   none
*   函数返回值:   成功返回号码,失败返回false
*   其它说明:   说明
*/
function   getPhoneNumber(){
if   (isset($_SERVER[ 'HTTP_X_NETWORK_INFO '])){
$str1   =   $_SERVER[ 'HTTP_X_NETWORK_INFO '];
$getstr1   =   preg_replace( '/(.*,)(11[d])(,.*)/i ', '2 ',$str1);
Return   $getstr1;
}elseif   (isset($_SERVER[ 'HTTP_X_UP_CALLING_LINE_ID '])){
$getstr2   =   $_SERVER[ 'HTTP_X_UP_CALLING_LINE_ID '];
Return   $getstr2;
}elseif   (isset($_SERVER[ 'HTTP_X_UP_SUBNO '])){
$str3   =   $_SERVER[ 'HTTP_X_UP_SUBNO '];
$getstr3   =   preg_replace( '/(.*)(11[d])(.*)/i ', '2 ',$str3);
Return   $getstr3;
}elseif   (isset($_SERVER[ 'DEVICEID '])){
Return   $_SERVER[ 'DEVICEID '];
}else{
Return   false;
}
}

/**
*   函数名称:   getHttpHeader
*   函数功能:   取头信息
*   输入参数:   none
*   函数返回值:   成功返回号码,失败返回false
*   其它说明:   说明
*/
function   getHttpHeader(){
$str   =   ' ';
foreach   ($_SERVER   as   $key=> $val){
$gstr   =   str_replace( "& ", "& ",$val);
$str.=   "$key   ->   ".$gstr. "rn ";
}
Return   $str;
}

/**
*   函数名称:   getUA
*   函数功能:   取UA
*   输入参数:   none
*   函数返回值:   成功返回号码,失败返回false
*   其它说明:   说明
*/
function   getUA(){
if   (isset($_SERVER[ 'HTTP_USER_AGENT '])){
Return   $_SERVER[ 'HTTP_USER_AGENT '];
}else{
Return   false;
}
}

/**
*   函数名称:   getPhoneType
*   函数功能:   取得手机类型
*   输入参数:   none
*   函数返回值:   成功返回string,失败返回false
*   其它说明:   说明
*/
function   getPhoneType(){
$ua   =   $this-> getUA();
if($ua!=false){
$str   =   explode( '   ',$ua);
Return   $str[0];
}else{
Return   false;
}
}

/**
*   函数名称:   isOpera
*   函数功能:   判断是否是opera
*   输入参数:   none
*   函数返回值:   成功返回string,失败返回false
*   其它说明:   说明
*/
function   isOpera(){
$uainfo   =   $this-> getUA();
if   (preg_match( '/.*Opera.*/i ',$uainfo)){
Return   true;
}else{
Return   false;
}
}

/**
*   函数名称:   isM3gate
*   函数功能:   判断是否是m3gate
*   输入参数:   none
*   函数返回值:   成功返回string,失败返回false
*   其它说明:   说明
*/
function   isM3gate(){
$uainfo   =   $this-> getUA();
if   (preg_match( '/M3Gate/i ',$uainfo)){
Return   true;
}else{
Return   false;
}
}

/**
*   函数名称:   getHttpAccept
*   函数功能:   取得HA
*   输入参数:   none
*   函数返回值:   成功返回string,失败返回false
*   其它说明:   说明
*/
function   getHttpAccept(){
if   (isset($_SERVER[ 'HTTP_ACCEPT '])){
Return   $_SERVER[ 'HTTP_ACCEPT '];
}else{
Return   false;
}
}

/**
*   函数名称:   getIP
*   函数功能:   取得手机IP
*   输入参数:   none
*   函数返回值:   成功返回string
*   其它说明:   说明
*/
function   getIP(){
$ip=getenv( 'REMOTE_ADDR ');
$ip_   =   getenv( 'HTTP_X_FORWARDED_FOR ');
if   (($ip_   !=   " ")   &&   ($ip_   !=   "unknown ")){
$ip=$ip_;
}
return   $ip;
}
}
?>
现在手机移动互联网已经超过PC了,很多网站都做了手机网站,包括我的小站。这里有一个问题,如果客户直接拿手机打开我的主域名,我该如何做出判断然后跳转到手机网站呢?以下两个函数就可以做到这一点。

以下是我正在用的函数,不过好像在iphone上有点问题,如果你有更好的解决方案,可以留言发给我,不尽感激。

 代码如下 复制代码
// 如果是手机设置,跳转到手机页面
if (isMobile ()) {
    Header ( "Location: mobile.php" );
    exit ();
}


/**
 * 判断用户是否为移动用户,可以判断iphone,Android,Windows Mobile和一般的手机系统
 */
function isMobile(){
    // 判断 iphone 和 ipad,不跳转
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    if(strpos($userAgent, "iPhone") ||
        strpos($userAgent, "iPad") ||
        strpos($userAgent, "iPod") ||
        strpos($userAgent, "iOS")){
        return false;
    }

    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
        return true;
    }

    //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    if (isset ($_SERVER['HTTP_VIA'])) {
        //找不到为flase,否则为true
        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
    }

    //判断手机发送的客户端标志,兼容性有待提高
    if (isset ($_SERVER['HTTP_USER_AGENT'])) {
        $clientkeywords = array (
            'nokia',
            'sony',
            'ericsson',
            'mot',
            'samsung',
            'htc',
            'sgh',
            'lg',
            'sharp',
            'sie-',
            'philips',
            'panasonic',
            'alcatel',
            'lenovo',
            'iphone',
            'ipod',
            'blackberry',
            'meizu',
            'android',
            'netfront',
            'symbian',
            'ucweb',
            'windowsce',
            'palm',
            'operamini',
            'operamobi',
            'openwave',
            'nexusone',
            'cldc',
            'midp',
            'wap',
            'mobile'
        );

        // 从HTTP_USER_AGENT中查找手机浏览器的关键字
        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
            return true;
        }
    }

    //协议法,因为有可能不准确,放到最后判断
    if (isset ($_SERVER['HTTP_ACCEPT'])) {
        // 如果只支持wml并且不支持html那一定是移动设备
        // 如果支持wml和html但是wml在html之前则是移动设备
        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) &&
            (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
            return true;
        }
    }

    return false;
}

php是服务器端程序语言,那我们该如何用php如何获取客户端电脑屏幕参数(宽度,高度,分辨率)呢?办法很简单,就是ajax。

首先需要说明的是php是服务器端的语言,是获取不到客户端的屏幕的宽度和高度的。但是有变通的方法就是通过客户端脚本语言javascript获取客户端的电脑屏幕的宽度和高度,然后通过ajax或者cookie的形式传递给php脚本语言,从而实现php获取客户端电脑屏幕宽度和高度的办法。

通过javascript获取客户端电脑的宽度,高度,分辨率的方法如下:

屏幕分辨率的高: window.screen.height

屏幕分辨率的宽: window.screen.width

屏幕可用工作区高度: window.screen.availHeight

屏幕可用工作区宽度: window.screen.availWidth

传递给php服务器端的方法如下:

 代码如下 复制代码
$.post('http://www.phpernote.com/php-template-framework/189.html',{w:width,h:height});//这里忽略了返回值

综合以上通过php获取客户端电脑显示屏幕的宽度,高度,分辨率的完整代码如下:

 代码如下 复制代码
<html xmlns="http://www.phpernote.com/javascript-function/34.html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="http://www.phpernote.com/js/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var width=window.screen.height;
    var height=window.screen.width;
    $.post('http://www.phpernote.com/php-template-framework/189.html',{w:width,h:height});//这里向你的统计文件里面传入相关的参数
});
</script>
</head>
<body>
这里是正文......
</body>
</html>
[!--infotagslink--]

相关文章

  • 百度网盟和google网盟推广那种效果好

    专做了百度和google的网盟推广以作推广效果的评估比较。百度的周期为6天,google为4天。   从百度的统计数据可以看出这六天的点击次数总共为464,平均点击花费了0.30元...2017-07-06
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • JS中引用百度地图并将百度地图的logo和信息去掉

    采用CSS覆盖的方法就可以了,但是官方是不允许这么做的...2013-10-13
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • 如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)

    以下是使用js代码实现百度地图计算两地距离,代码如下所示:<script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script><script language="javascript" type="text/javascript" src="js/...2015-10-30