我正在开发一个使用 Bing 地图 7.0 的 Web 应用程序。我想知道是否有一种方法可以将函数绑定到一个类事件,该事件在地图被拖动或缩放Map时监听。从我在文档中看到的内容来看,Map 类的事件与我正在寻找的事件很接近,但是在我不想特别考虑的情况下调用此事件,例如,如果我使用隐藏地图的包含 div jQuery 或地图创建/初始化。理想情况下,我还希望这是一个节流事件,在给定时间后调用处理函数。关于如何实施的任何想法?viewchangeend
更新
正如 psousa 所建议的,我使用了该viewchangeend事件。
这是我尝试实施的技巧,以尝试检测地图是否已缩放或被拖动。我仍然将处理程序绑定到viewchangeend事件,但这次我检查地图的西北坐标或东南坐标是否发生了变化。
var map; // contains Microsoft.Maps.Map instance
var nw;  // contains the NW Microsoft.Maps.LocationRect instance
var se;  // contains the SE Microsoft.Maps.LocationRect instance 
// initialization code goes here some where
Microsoft.Maps.Events.addThrottledHandler(map, "viewchangeend", function(arg) {
            
    var curNW = map.getBounds().getNorthwest();
    var curSE = map.getBounds().getSoutheast();
            
    if (nw.latitude  != curNW.latitude ||
    nw.longitude != curNW.longitude ||
    se.latitude  != curSE.latitude ||
    se.longitude != curSE.longitude)
    {
        nw = curNW;
        se = curSE;
        // Execute actual handler code here
    }
}, 1000);
此代码无法按我的预期工作。当我调试代码时,如果我去隐藏包含 div 的地图(使用 jQuery),我会注意到,curNW并且与curSE我在上一次调用中存储的坐标不同。如果我从不拖动地图或放大或缩小地图,为什么会这样?我只是隐藏地图,为什么地图的坐标会改变?对我来说完全是无稽之谈。理想情况下,我希望 Bing 地图能够为开发人员提供一个zoomend或dragend事件,所以我可以说:
Microsoft.Maps.Map.addThrottledHandler(map, "zoomend", handler, 1000);
Microsoft.Maps.Map.addThrottledHandler(map, "dragend", handler, 1000);
我相信谷歌地图提供了这个功能。如果有人知道检查这些事件的更好方法,请告诉我。我不想向可能触发的页面元素添加额外的处理程序,viewchangeend因为在这个页面中发生了很多事情。感谢帮助。