要在地图上绘制圆,我有一个中心GLatLng(A)和一个以米为单位的半径(r).
这是一个图表:
-----------
--/ \--
-/ \-
/ \
/ \
/ r \
| *-------------*
\ A / B
\ /
\ /
-\ /-
--\ /--
-----------
Run Code Online (Sandbox Code Playgroud)
如何计算位置B的GLatLng?假设r与赤道平行.
使用GLatLng.distanceFrom()方法获得A和B时的半径是微不足道的 - 但是反过来却不是这样.似乎我需要做一些更重的数学.
我正在使用PHP创建MySQL调用,我正在使用hasrsine forumula计算距离:
SELECT name, id,
(6371 * acos(cos(radians(' . $lat . '))
* cos(radians(geoname.latitude))
* cos(radians(geoname.longitude) - radians(' . $lon . '))
+ sin(radians(' . $lat . '))
* sin(radians(geoname.latitude)))) AS distance
Run Code Online (Sandbox Code Playgroud)
我的问题是; 最好在SQL中进行所有这些计算吗?此查询搜索包含大约1000条记录的表.用PHP而不是SQL做一些数学会更有效吗?有没有更好的方法来优化此查询?
实际上我的服务器数据库中有数百万人的记录,我想获取那些靠近我5英里的人的数据(我的意思是一个半径5英里的圆圈)......
我通过网络服务将这些数据发送到iPhone ...
请告诉我如何在我的PHP服务器上执行此操作....