我正在建立一个网站,允许用户找到我们最近的汽车旅馆位置(其中有26个位于美国各地)。我列出了他们所在的城市名单。
我想在用户登录首页时显示最近的位置。例如,如果用户来自新泽西州纽瓦克,他将会看到来自纽约市汽车旅馆的图片,如果用户来自加利福尼亚州圣何塞,他将会看到旧金山的图像。
最好的方法是什么?有没有人知道网上那些显示我正在尝试做什么的例子?这甚至可能吗?
我看到Groupon和LivingSocial使用这个,所以我想为什么我不试一试。 :)
答案 0 :(得分:1)
您首先需要将汽车旅馆的纬度/经度坐标存储在数据库中 - 使用谷歌地图,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(以英文显示...)
答案 1 :(得分:1)
如果你正在使用apache,你可以试试geoip。
答案 2 :(得分:0)
您可以尝试Geolite city。它是免费的(带有归属条款)或者也可以购买。这减少了“找到最接近用户IP地址的城市”问题,以“找到距离已知城市最近的城市”。
同一家公司提供城市数据库,其中包含经度/纬度。这应该可以解决问题。
答案 3 :(得分:0)
我使用此代码从地址表中计算googlemaps纬度和经度的距离。
Geocode是一个函数,它在给定地址字符串的情况下从谷歌地图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
答案 4 :(得分:0)
您可以使用MaxMind.com上的免费数据获取最近的城市IP地址(我相信您可以支付更准确的数据库)。如果您可以获得城市的纬度/经度,并将其与您获胜的每个汽车旅馆的纬度/经度进行比较:)
答案 5 :(得分:0)
你想要的是存储汽车旅馆的纬度/经度坐标,然后让用户在浏览器中输入他的位置,很可能是一个邮政编码,然后你想使用harvesine formule计算用户和用户之间的距离汽车旅馆显示附近的汽车旅馆。或者,您可以使用IP来协调IP2location等服务以获取用户位置。