代码之家  ›  专栏  ›  技术社区  ›  Sander Versluys

使用谷歌地图API获取当前缩放级别的最大可视距离

  •  3
  • Sander Versluys  · 技术社区  · 15 年前

    加载某些方向时,地图将调整到适当的缩放级别。

    然后我请求在数据库中从地图中心到一定半径范围内的几个标记。

    如何根据当前缩放级别获得正确的半径值?该值应该是从地图中心到边缘的实际距离。

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  3
  •   Chris B    15 年前

    我认为在实际范围内,而不是半径范围内,获得标记更容易、更准确。如果你愿意,你可以很容易地扩大或缩小界限。

    Javascript:

    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();
    
    var s = sw.lat();
    var w = sw.lng();
    var n = ne.lat();
    var e = ne.lng();
    

    PHP/SQL:

    $query = "SELECT * FROM Markers WHERE ";
    if ($w > $e) { // If the bounds include the intl. date line
        $query .= "(lat BETWEEN $s AND $n) AND ((lng BETWEEN -180 AND $e) OR (lng BETWEEN $w AND 180))";
    } else {
        $query .= "(lat BETWEEN $s AND $n) AND (lng BETWEEN $w AND $e)";
    }
    

    但是如果你真的想用半径法,你可以这样做:

    var w = map.getBounds().getSouthWest().lng();
    var centerLng = map.getCenter().lng();
    
    var distance = centerLng - w; // This is the distance from the center to the left edge in degrees.