【问题标题】:Dynamic loading of Markers on Google Maps在谷歌地图上动态加载标记
【发布时间】:2015-01-10 08:26:33
【问题描述】:

我想从 Mysql 数据库动态加载谷歌地图上的标记。地图中心半径 20Km 内的标记应出现,并且随着地图中心的更改/平移,位于 20Km 半径外的旧标记应消失,而新中心半径 20Km 内的新标记应出现。

现在我可以加载地图中心半径 20 公里内的标记,但只能在网页打开后加载。

任何提示性教程或帮助

【问题讨论】:

  • 你在服务器上使用什么计算(用于数据库)?
  • 我们不关心这个,因为 OP 说这是有效的。

标签: javascript ajax google-maps google-maps-api-3


【解决方案1】:
  1. 在地图对象上绑定center_changed 事件监听器。
  2. 创建标记时,将它们推送到数组中(推送每个标记对象)。
  3. 在中心更改 (#1) 时,循环遍历您的标记数组并在每个标记上调用 setMap(null)
  4. 使用新的中心坐标再次查询您的数据库。
  5. 从 #2 开始再次执行每个步骤

这里有一些快速代码,以便您了解:

// Create an array of markers
var markers = [];

// Create your map and all the stuff you need

// Bind the event listener
google.maps.event.addListener(map, 'center_changed', reloadMarkers);

// Function to reload the markers
function reloadMarkers() {

    for (var i = 0; i < markers.length; i++) {

        // Remove each marker from map
        markers[i].setMap(null);
    }

    createMarkers();
}

function createMarkers() {

    // Query your database with the parameters you need
    // Create each marker object (probably within a loop)

    var marker = new google.maps.Marker({
        map: map,
        // Your other marker properties here
    });

    // Push new marker to the markers array
    markers.push(marker);
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2013-07-26
    相关资源
    最近更新 更多