2011-03-21 92 views
2

我正在一个网站上,允许用户找到我们最近的汽车旅馆位置(其中有26个在美国)。我有他们所在城市的名单。找到最近的主要城市

我想显示最近的位置,当用户进入我们的头版上。例如,如果用户来自新泽西州的纽瓦克,他将显示来自纽约市汽车旅馆的图像,如果用户来自加利福尼亚州圣何塞,他将显示旧金山的图像。

这样做的最好方法是什么?有没有人知道网络上的任何示例,显示我想要做什么?这甚至有可能吗?

我看到了Groupon和LivingSocial的使用这个,所以我想为什么不我给它一个镜头。 :)

+0

看看一侧的相关栏,一对夫妇的人的那站了出来:http://stackoverflow.com/questions/4392745/finding-nearest-city-like-oodle-com/4392950#4392950 HTTP ://stackoverflow.com/questions/1570670/geocoding-grouping-multiple-addresses-into-major-cities – 2011-03-21 21:27:29

+0

http://www.lowes。com在页面顶部有相同的功能,他们列出了最近的商店 – ServAce85 2012-01-07 11:49:05

回答

0

您可以试试Geolite city。它是免费的(带有归属条款),或者可以被购买。这就减少了“找到距离用户的IP地址最近的城市”问题,以“找到距离已知城市最近的城市”。

同一家公司提供了一个城市的数据库,其中除其他外包含经度/纬度。这应该够了吧。

0

我用这个代码从表中计算的GoogleMaps经度和纬度的距​​离的地址。

地理编码是返回的纬度和经度的从给定的一个地址字符串谷歌地图API的阵列,在一个拉链下面的情况下的功能。您的位置的表格必须包含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

0

可以使用上MaxMind.com免费的数据(我beleive你可以支付更精确的数据库)获取最近的城市,以一个IP地址。如果你能得到的拉/长为城市和比较它拉/长为每个汽车旅馆你赢:)

0

你需要的是存储汽车旅馆的纬度/经度坐标,然后让用户在浏览器中键入他的位置最有可能是一个邮政编码,然后你想使用harvesine formule来计算用户和汽车旅馆之间的距离,以显示附近的汽车旅馆。或者您可以使用IP来协调像IP2location这样的服务来获取用户位置。