【问题标题】:why does my zoomToExtent in OpenLayers not work when the page loads?为什么我在 OpenLayers 中的 zoomToExtent 在页面加载时不起作用?
【发布时间】:2013-07-03 03:00:19
【问题描述】:

this地图中我添加了一行代码,使其缩放到矢量图层:

map.zoomToExtent(vector_Layer.getDataExtent());

这会将几内亚湾赤道与格林威治子午线交汇处的点放大至最大。它不应该在这里放大,它应该显示苏格兰。

我在 Chrome 的控制台中传递了相同的代码,并且运行良好。也许,直到页面加载后它才会起作用。有谁知道为什么页面加载时它不能正常工作,有谁知道我可以做些什么来修复它?

谢谢

【问题讨论】:

    标签: javascript openlayers


    【解决方案1】:

    你是对的;有时脚本需要加载页面元素(并显示在DOM 中)才能对其进行操作。我会先尝试以下两种方法之一:

    1. 将您的 JS <script> 标签移到页面底部,并移出 head。将它们放在结束 body 标记之前,看看是否有效。这样,您的页面就有时间加载(这是一种非常常见的做法)。

    2. 或者,您可以在 onLoad 事件中调用此函数。你可以阅读如何使用它here

    更新:

    如果上述解决方案不起作用,请查看以下资源。看起来还有其他一些方法可以找到 OpenLayers 地图的“已加载”事件:

    http://lists.osgeo.org/pipermail/openlayers-users/2012-April/024858.html https://gis.stackexchange.com/questions/10671/register-event-loadend-on-layer

    祝你好运!

    【讨论】:

    • 非常感谢!我使用的解决方案是:vector_Layer.events.register("loadend", map, function(e) { map.zoomToExtent(vector_Layer.getDataExtent()); });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多