2009-09-07 60 views
3

加载某些方向时,地图将调整为适当的缩放级别。使用Google Maps API获取当前缩放级别的最大观看距离

然后我要求在地图中心某个半径范围内的数据库中有多个标记。

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

谢谢!

+0

上/下或左/右边缘? – 2009-09-07 14:16:52

+0

好吧,考虑到我需要距离地图中心的距离,我真的不重要......但是让我们说,顶部/左边缘。 – 2009-09-07 14:38:34

+0

是否要从地图中心或地图范围内的所有标记中获取半径的所有标记?这是两回事。 – 2009-09-07 18:16:34

回答

3

我认为在实际范围内而不是半径范围内获得标记会更容易和更准确。如果您愿意,您可以轻松扩展或缩小边界。

的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. 
+0

真棒,谢谢! – 2009-09-09 10:23:53

相关问题