博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录两个函数--1.计算某个经纬度的周围某段距离的正方形的四个点。2.根据两点间的经纬度计算距离...
阅读量:6219 次
发布时间:2019-06-21

本文共 1639 字,大约阅读时间需要 5 分钟。

hot3.png

    前些日子在做手机网站开发的时候碰到这样一个需求,用某度地图的定位功能查看自己现在所在的位置,同时要显示出以自己为圆心,周围1000米以内的商家。功能很简单,拿到自己的经纬度,算出四个点的经纬度坐标,从数据库里拿出相对应的商家,显示在地图上即可,关键就是需要这么一个好用函数。还好找到了一个不错的,分享给大家,估计大家做到这一块的时候应该也会用到。

/** *	计算某个经纬度的周围某段距离的正方形的四个点 *	地球半径,平均半径为6371km *	@param lng float 经度 *	@param lat float 纬度 *	@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米 *	@return array 正方形的四个点的经纬度坐标 */ function returnSquarePoint($lng, $lat,$distance = 0.5){     $dlng =  2 * asin(sin($distance / (2 * 6371)) / cos(deg2rad($lat)));    $dlng = rad2deg($dlng);         $dlat = $distance/6371;    $dlat = rad2deg($dlat);         return 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)                ); }

    做某度地图的开发还会用到一个很有用的函数,就是通过两点之间的经纬度,计算出两点之间的距离,也把它分享出来吧。

/** 	* @desc 根据两点间的经纬度计算距离 	* @param float $lat 纬度值 	* @param float $lng 经度值 	*/	function getDistance($lat1, $lng1, $lat2, $lng2){  			$earthRadius = 6367000; 			 		$lat1 = ($lat1 * pi() ) / 180; 		$lng1 = ($lng1 * pi() ) / 180; 		 		$lat2 = ($lat2 * pi() ) / 180; 		$lng2 = ($lng2 * pi() ) / 180; 	 		 		$calcLongitude = $lng2 - $lng1; 		$calcLatitude = $lat2 - $lat1; 		$stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2); 		$stepTwo = 2 * asin(min(1, sqrt($stepOne))); 		$calculatedDistance = $earthRadius * $stepTwo; 		 			return round($calculatedDistance); 	}

    

转载于:https://my.oschina.net/woshixiaomayi/blog/507002

你可能感兴趣的文章
Nginx 中last和break 及 permanent 和 redirect 的爱恨情仇
查看>>
致歉!《迟来的观后感》一文存在问题!
查看>>
mysql 安全
查看>>
【Transact-SQL】SQL Server自动把left join自动转化为inner join、以及关联时的数据重复问题...
查看>>
Options for mounting NFS filesystem
查看>>
Linux学习-第四节课
查看>>
delphi获取剩余磁盘空间
查看>>
keepalived
查看>>
java通过报文交换数据
查看>>
HTTP/2 对 Web 性能的影响(下)
查看>>
深入浅出OOP(四): 多态和继承(抽象类)
查看>>
Spring Boot 为什么这么火?
查看>>
MySQL常用命令
查看>>
Android中用广播从Service中向Activity发送信息
查看>>
报表工具轻松搞定卡片式报表
查看>>
如何处理报表中的舍位平衡
查看>>
SQLServer 延迟事务持久性
查看>>
六个编程范型将改变你对编程的看法
查看>>
测试 Open Live Writer
查看>>
iOS开发,Bluetooth你应该了解一些!
查看>>