lnsoso
2012-10-08 22:47:34 +08:00
1、要想取得周边的 POI 必须要在服务器端计算,你总不能把所有 POI 都放在 App 里吧?当然可以缓存少量重要 POI。
2、服务器上有多种方式可以计算,既然你用 PHP 下面就给你一段 MySQL 的,当然实际为了效率线上不会用这个。
latitude、longitude 为数据库字段;$lat、$lon 为 PHP 里用户当前坐标;{NUMBER OF KILOMETERS} 为周边范围(千米);数据表名 location_table。
SELECT D.*, DEGREES(acos(cos(RADIANS(90-latitude))*cos(RADIANS(90-$lat))+sin(RADIANS(90-latitude))*sin(RADIANS(90-$lat))*cos(RADIANS(longitude-$lon))))/360*40074 AS distance FROM location_table as D HAVING distance <= {NUMBER OF KILOMETERS}