Google Map或Mapquest API用于跟踪可见区域

时间:2011-12-15 11:50:32

标签: google-maps geolocation mapquest

我正在尝试从地图反向查找位置。 说,我的数据库中有不同的位置及其坐标和细节。

现在,无论何时我放大/缩小或拖动地图(在Mapquest中),所有条目都应显示在带有地图可见区域的下拉列表中。它应该根据地图缩放级别和位置更新列表。

无论如何都要这样做。我也很好用Google地图。

以下是我想要实现的链接。 http://oobgolf.com/courses/finder/

2 个答案:

答案 0 :(得分:1)

基本上......业务逻辑是这样的:

您需要从地图对象获取边界,然后通过AJAX将这些作为参数传递给获取记录的SQL查询,例如minLat / maxLat& minLng / maxLng ...这些进入WHERE条件。这将从您的地理数据中“切出一个矩形”。您可以将这些值调整5-10% - 这样非常接近边界的点就不会被绘制到地图上(这只是一个整容修复)。

刚刚在我的驱动器上找到了一些用于Google Maps API的示例JS代码(它使用jQuery):

function loadViewport() {
    var b = map.getBounds();
    $.minY = b.getNorthEast().lng();
    $.maxY = b.getSouthWest().lng();
    $.minX = b.getSouthWest().lat();
    $.maxX = b.getNorthEast().lat();
    $.url = "http://www.somehost.com/data.php?mode=viewport&minX="+$.minX+"&maxX="+$.maxX+"&minY="+$.minY+"&maxY="+$.maxY;
    $.ajax({type:"GET",url:$.url,dataType:"json",success: parseJSON});
}

填写左侧列表需要在函数parseJSON()...

中完成

SQL的WHERE条件是这样的:

    WHERE
        (`location`.`latitude` BETWEEN ".(float)$minX." AND ".(float)$maxX.") 
    AND
        (`location`.`longitude` BETWEEN ".(float)$maxY." AND ".(float)$minY.")

当然,表中的列需要是数据类型的浮点数 - 否则这将无法确定。

如您所见,我正在从字符串转换为浮动 - 以便启用比较...

希望这有帮助,MapQuest的代码可能会有所不同 - 但逻辑应该完全相同。

Source

答案 1 :(得分:0)

此逻辑也适用于MapQuest API。您需要将地图的当前范围传递到查询中,以便您可以根据地图的范围查询数据库。然后查询结果将填充您的下拉菜单,因此当前在地图上显示的所有POI将在下拉菜单中显示相应的项目。

如果您正在使用MapQuest JavaScript API,请查看MQA.TileMap.getBounds方法,该方法返回地图范围的当前边界框。我发现MapQuest Developer Network网站上的论坛在我遇到问题时非常有帮助,所以如果您需要帮助或需要进一步说明,请不要犹豫,在那里发布问题或代码示例。这是链接:http://developer.mapquest.com/web/products/forums/