PHP-如何使用Google Map API在给定位置附近按位置查找
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-如何使用Google Map API在给定位置附近按位置查找,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2339字,纯文字阅读大概需要4分钟。
内容图文
![PHP-如何使用Google Map API在给定位置附近按位置查找](/upload/InfoBanner/zyjiaocheng/671/ae7ac149af9848ccb3f477025c4ee932.jpg)
想要找到给定地点或地址的所有附近地点.是否有任何Google Map API?或者我们需要按照以下步骤进行操作:
>找到该地方的纬度.
>进行一些处理,并稍等片刻.
>使用从步骤2中获得的经纬度进行反向地理编码,并找到每个经纬度对的位置.
澄清我另外,如果您可以跳过第2步,那就太好了.
这种方法行得通吗?你能澄清一下吗
解决方法:
这实际上取决于您要查找的附近事物是否在Google数据库中作为感兴趣的地方,或者它们是否是任意地址/位置.
如果它们是地址/位置,则类似于您指定的内容是正确的.
>对所有要包含的地点进行地理编码并将其存储在数据库中(使用纬度/经度)
>对您所在的位置(您要获取信息的地方)进行地理编码
>使用数学例程确定球面上的距离,以列出指定距离内的位置
数学是:
>获取以弧度为单位的当前经度(LatOrLon * PI / 180)
>获取以弧度为单位的目标纬度和经度(LatOrLon * PI / 180)
>获取球体的半径(在这种情况下,地球= 3963.1英里)
>使用冗长而令人困惑的论坛
下方(其中Lat1和Lon1是您在弧度中的当前位置,Lat2和Lon2是您在弧度中的目标):
Acos(
Cos(Lat1) * Cos(Lon1) * Cos(Lat2) * Cos(Lon2) +
Cos(Lat1) * Sin(Lon1) * Cos(Lat2) * Sin(Lon2) +
Sin(Lat1) * Sin(Lat2)
) * EarthRadiusInMiles
可以使用SQL函数(MSSQL,但您可以轻松地将此逻辑编码为大多数其他语言)来完成此操作.
CREATE FUNCTION [dbo].[CoordinateDistanceMiles](
@Latitude1 float,
@Longitude1 float,
@Latitude2 float,
@Longitude2 float
)
RETURNS float
AS
BEGIN
-- SAME LOCATION, RETURN 0
IF @Latitude1 = @Latitude2 AND @Longitude1 = @Longitude2 RETURN 0.00
-- CONSTANTS
DECLARE @EarthRadiusInMiles float;
SET @EarthRadiusInMiles = 3963.1
DECLARE @PI float;
SET @PI = PI();
-- RADIANS conversion
DECLARE @lat1Radians float;
DECLARE @long1Radians float;
DECLARE @lat2Radians float;
DECLARE @long2Radians float;
SET @lat1Radians = @Latitude1 * @PI / 180;
SET @long1Radians = @Longitude1 * @PI / 180;
SET @lat2Radians = @Latitude2 * @PI / 180;
SET @long2Radians = @Longitude2 * @PI / 180;
RETURN Acos(
Cos(@lat1Radians) * Cos(@long1Radians) * Cos(@lat2Radians) * Cos(@long2Radians) +
Cos(@lat1Radians) * Sin(@long1Radians) * Cos(@lat2Radians) * Sin(@long2Radians) +
Sin(@lat1Radians) * Sin(@lat2Radians)
) * @EarthRadiusInMiles;
END
然后,可以从任何调用查询中按距离排序,例如:
CREATE PROCEDURE [dbo].[NearbyThings]
(
@Lat float,
@Lon float,
@Num int = 10
)
AS
SET NOCOUNT ON
Select Top (@Num)
'Distance' = Round(dbo.CoordinateDistanceMiles(@Lat, @Lon, Lat, Lon), 1),
ThingId,
Postcode,
Lat,
Lon
From
Things
Order by
dbo.CoordinateDistanceMiles(@Lat, @Lon, Lat, Lon) ASC
GO
内容总结
以上是互联网集市为您收集整理的PHP-如何使用Google Map API在给定位置附近按位置查找全部内容,希望文章能够帮你解决PHP-如何使用Google Map API在给定位置附近按位置查找所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。