回答 2. 首先您可以使用 PHP 函数SOUNDEX( ) 在名称上创建一个新字段(列)。回答 1. 使用Haversine 公式查找给定半径内的地点。下面的查询使用此公式。
$query = sprintf("SELECT name, latitude, longditude( 3959 * acos( cos( radians('%s') ) * cos( radians( latitude ) ) * cos( radians( longditude ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( latitude ) ) ) ) AS distance FROM gb WHERE `soundex` LIKE '%s' HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string(soundex($soundex)),
mysql_real_escape_string($radius));
上面的代码以英里为单位计算距离,如果您想要以公里为单位的答案,您需要将 3959 替换为 6371。然后您可以使用此查询在 soundex 字段上搜索半径内的地点。