找到最近的主要城市
Posted
技术标签:
【中文标题】找到最近的主要城市【英文标题】:Locate nearest major city 【发布时间】:2011-03-21 21:13:55 【问题描述】:我正在开发一个网站,让用户可以找到我们最近的汽车旅馆位置(美国有 26 个)。我有他们所在城市的列表。
当用户进入我们的首页时,我想显示最近的位置。例如,如果用户来自新泽西州纽瓦克,他将看到我们纽约汽车旅馆的图片,如果用户来自加利福尼亚州圣何塞,他将看到旧金山图片。
最好的方法是什么?有谁知道网上有什么例子可以说明我正在尝试做什么?这甚至可能吗?
我看到 Groupon 和 LivingSocial 使用它,所以我想我为什么不试一试。 :)
【问题讨论】:
看看旁边的相关栏,有几个比较突出:***.com/questions/4392745/…***.com/questions/1570670/… lowes.com 在列出最近的商店的页面顶部具有相同的功能 【参考方案1】:如果你用的是apache,可以试试geoip。
http://www.maxmind.com/app/mod_geoip
【讨论】:
【参考方案2】:您首先需要将汽车旅馆的纬度/经度坐标存储在数据库中 - 使用谷歌地图,使用 26 不会花费太长时间。
然后获取访问者位置,使用类似 IP2Location - http://www.ip2location.com/developers.aspx
然后计算访客与您的每家汽车旅馆之间的距离 - http://sebastian-bauer.ws/en/2010/12/12/geo-koordinaten-mysql-funktion-zur-berechnung-des-abstands.html(是英文的...)
【讨论】:
【参考方案3】:你可以试试Geolite city。它是免费的(带有归属条款),也可以购买。这将“找到离用户 IP 地址最近的城市”问题减少到“找到离已知城市最近的城市”。
同一家公司提供城市数据库,其中包含经度/纬度等内容。这应该可以解决问题。
【讨论】:
【参考方案4】:您可以使用MaxMind.com 上的免费数据获取离 IP 地址最近的城市(我相信您可以为更准确的数据库付费)。如果您可以获取城市的纬度/经度并将其与您赢得的每家汽车旅馆的纬度/经度进行比较:)
【讨论】:
【参考方案5】:您想要的是存储汽车旅馆的纬度/经度坐标,然后让用户在浏览器中输入他的位置,很可能是邮政编码,然后您想使用 harvesine 公式计算用户与motel 以显示附近的汽车旅馆。或者您可以使用 IP 地理坐标服务,如 IP2location 来获取用户位置。
【讨论】:
【参考方案6】:我使用此代码计算 googlemaps 纬度和经度与地址表的距离。
Geocode 是一个函数,它在给定地址字符串的情况下,从 google maps api 返回一个纬度和经度数组,在 zip 下面的情况下。您的位置表必须包含 lat 和 lng 列。在此示例中,我使用了十进制(8,5)类型,但您也可以使用点列类型。
$starting_location = geocode($zip);
$distance = '(3959 * acos(cos(radians('.$starting_location['latitude'].')) * cos(radians(lat)) * cos(radians(lng) - radians('.$starting_location['longitude'].')) + sin(radians('.$starting_location['latitude'].')) * sin(radians(lat))))';
$location_row = query('SELECT location_id,addr,addr2,city,state,zip,phonenumber,'.$distance.' AS distance FROM location_info WHERE '.$distance.' is not null ORDER BY distance LIMIT 1');
如果我错误地链接到另一个人的答案,请纠正我,但我想我从这个问题中得到了方向:Fastest Way to Find Distance Between Two Lat/Long Points
【讨论】:
以上是关于找到最近的主要城市的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Google MAP API 通过 lat、lng 找到最近的城市