PHP计算百度地图两个GPS坐标之间的距离代码
更新时间:2016年11月25日 15:37 点击:1334
应用百度地图时,我们如何用php计算两个GPS经纬度坐标之间的距离呢?现在我们把函数代码分享给你。
下面来看一个php按照权重随机排序数据的例子,希望这个例子能对各位带来一些例子,有需要的进入看看吧。
移动互联网时代,手机站是必须的。以下是本人整理的php获取手机浏览器的信息函数,希望对您开发手机站有所帮助。
现在手机移动互联网已经超过PC了,很多网站都做了手机网站,包括我的小站。这里有一个问题,如果客户直接拿手机打开我的主域名,我该如何做出判断然后跳转到手机网站呢?以下两个函数就可以做到这一点。
php是服务器端程序语言,那我们该如何用php如何获取客户端电脑屏幕参数(宽度,高度,分辨率)呢?办法很简单,就是ajax。
以下是我分享的用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 /** * @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; ?> |
此收藏的手机信息函数类有取手机号码,浏览器报头信息,取得手机类型,取得手机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; } } ?> |
以下是我正在用的函数,不过好像在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是服务器端的语言,是获取不到客户端的屏幕的宽度和高度的。但是有变通的方法就是通过客户端脚本语言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> |
上一篇: php面相对象的魔术方法中文说明与例子
下一篇: PHP中简单实现数学组合算法
相关文章
- 专做了百度和google的网盟推广以作推广效果的评估比较。百度的周期为6天,google为4天。 从百度的统计数据可以看出这六天的点击次数总共为464,平均点击花费了0.30元...2017-07-06
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?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实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- 采用CSS覆盖的方法就可以了,但是官方是不允许这么做的...2013-10-13
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 一、日期减去天数等于第二个日期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
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 小编分享了一段简单的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商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
- 本文介绍了如何延迟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