我想在 map 上画一个圆圈,并获取数据库中的所有行,其中包含落入该圆圈的纬度/经度点。
我不想使用 google.maps.Circle
绘制圆圈,因为这会应用墨卡托投影失真。我想要一个几何圆而不是地理圆。
所以我可能可以使用某种叠加层将其绘制到 Google map 上。但是可以在我的数据库中查询这些点吗?
如果我要画一个地理圈,我可以使用 haversine formula ,但这不适用于几何圆。
最佳答案
您可以使用毕达哥拉斯来查找圆内的点。
a^2 + b^2 = c^2
以下 SQL 使用 PDO查找圆半径内的点
$stmt = $dbh->prepare("SELECT name, lat, lng, ( SQRT(POW(? - lat, 2)
+ POW(? - lng, 2))) AS distance FROM mytable
HAVING distance < ? ORDER BY distance ASC ");
// Assign parameters
$stmt->bindParam(1,$center_lat);//Center of circle
$stmt->bindParam(2,$center_lng);////Center of circle
$stmt->bindParam(3,$radius);
Javascript 函数(如果需要)
function Pythagoras (x1,y1,x2,y2){
var Dist = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
return Dist ;
}
关于javascript - Google Maps Circle/MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28031516/