要求:我目前正在开发一款拥有超过30000条记录的应用。要求是基于位置/感知搜索。例如。距离我现在的位置5mi以内。
如何访问此服务:将从Web和iOS访问此服务 应用程序。
开发平台:
基于位置的搜索
我一直在研究这个问题,我将使用Haversine Formula来做这件事。但是对于Haversine公式有效,我需要为我的数据库中的所有记录提供反向地理代码。 我曾经使用的唯一反向地理编码服务来自谷歌,我知道他们不允许这样做而不在地图上显示结果。
注意:地理编码API只能与Google地图结合使用;禁止在地图上显示地理编码结果。
对此的任何帮助都将受到高度赞赏。
更新1#
答案 0 :(得分:1)
您可以使用各种地理编码服务,但您很可能需要付费。查看Cloudmate。他们可能会为你的情况而努力。如果这是一个商业投资,花一点钱并确保获得良好的数据可能会更好。
30,000条记录根本不会花那么长时间。如果没有速率限制,应该可以在10-20分钟内完成。我一次一页地对2000条记录进行地理编码(每页100条),花了5分钟。
前段时间我建立了一个位置管理界面。它没有完成,代码不是最好的,但它可能会给你一个起点。它使用谷歌进行地理编码,但可以很容易地换掉任何其他服务。
答案 1 :(得分:1)
$result = mysql_query("SELECT * FROM abc ORDER BY id DESC ") or die(mysql_error());
while($row = mysql_fetch_array( $result )){
$lat=$row['latitude'];
$long=$row['longitude'];
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$long."&sensor=false";
$json = @file_get_contents($url);
$data = json_decode($json);
$status = $data->status;
$address = '';
if($status == "OK")
{
$address = $data->results[0]->formatted_address;
}
else
{
echo "No Data Found Try Again";
}
mysql_query("UPDATE abc SET location='$address' WHERE id=".$row['id']."") or die(mysql_error());
printf( $address."%d\n", mysql_affected_rows());
echo "<br/><br/>";
}