Javascript 显示从数据库到用户地理位置最近的位置
我使用Google Maps API v3将数据库中所有存储的位置显示为标记。 我想做的是在地图下面显示一个列表,上面有最近的位置,比如说10公里以内的位置,以及它们的名称、描述和到用户当前位置的距离,按距离排序。我不知道如何构建查询。我目前有一个代码,显示数据库中的所有位置:Javascript 显示从数据库到用户地理位置最近的位置,javascript,php,sql,google-maps-api-3,Javascript,Php,Sql,Google Maps Api 3,我使用Google Maps API v3将数据库中所有存储的位置显示为标记。 我想做的是在地图下面显示一个列表,上面有最近的位置,比如说10公里以内的位置,以及它们的名称、描述和到用户当前位置的距离,按距离排序。我不知道如何构建查询。我目前有一个代码,显示数据库中的所有位置: $q = "SELECT name, image, description, price, lat, lng, rating, owner FROM places"; $res1 = mysqli_qu
$q = "SELECT name, image, description, price, lat, lng, rating, owner FROM places";
$res1 = mysqli_query($linkNew, $q);
while($row1 = mysqli_fetch_array($res1)){
echo "<div class='place'>";
echo "<h3 class='placeTitle'>" . $row1[0] . "</h2><br />";
echo "<img src='" . $row1[1] . "' class='placeImage' width='30' height='30' />";
echo "<p class='placeDescription'>" .$row1[2] . "</p><br />";
echo "<p class='placePrice'>€ " .$row1[3] . "/night</p><br />";
echo "<p class='placeRating'>" .$row1[6] . "/5</p><br />";
echo "<p class='placeOwner'>Owner: <a href='#'><b>" .$row1[7] . "</b></a></p><br />";
echo "</div>";
}
非常感谢。有没有一种方法可以以某种方式提取地理位置并将其作为查询的中心点?请参阅我编辑的答案。您似乎主张只将值连接到查询字符串中。为了使用参数化查询,应该避免这种情况,或者您有被授予SQL注入的风险,如果类型是某种类型的数字,则可以减轻这种风险。。。但这是原则,这是为了解释如何构建查询。这不应该是一个关于安全的培训课程。可能是
$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
userLat = position.coords.latitude;
userLng = position.coords.longitude;
});
}