根据极端点自动缩放

时间:2018-06-09 10:03:16

标签: javascript openlayers

我使用OL 4.6.5。

我在矢量图层中放置了一些标记,并使用自制的东西来查找缩放,具体取决于放置标记的距离(数据库中的点)。这是笨拙和粗糙但它的作用......

现在我寻找一种功能或其他方法来自动设置缩放,具体取决于最大和最小纬度和长度。我无法使#Ex; fitExtent()"工作,所以我看了这里,我找到了两个解决方案,但我只能使用这个:

public static function createExpedition($region, $ship, $title, $days) {
        $new = new PreExpedition;
        $new->region_id = $region;
        $new->ship_id = $ship;
        $new->title = $title;
        $new->days= $days;
        $new->save();
    }

它使用" fitExtent()"以另一种方式,但不幸的是它不会从2改变缩放。另一种解决方案是一些奇怪的语言??? JS控制台报告:"未捕获的SyntaxError:意外的标识符"。

此处有一个示例页面:https://xerxx.se/zoomtest.html JScode位于底部。我试过的两种解决方案都在那里,上面引用的是"在行动"。 我自己的笨拙代码也在那里 - 你会看到它。

必须有一个聪明的命令,对吧?

1 个答案:

答案 0 :(得分:0)

此处不需要您在代码中采用的语法,因为vectorSource.on('change', function() {仅在异步加载源(Ajax调用)时才很重要。

您的代码是同步的,例如

var vectorSource = new ol.source.Vector({
    features: [placeOSM[1], placeOSM[2]]
});
...

替换块

var onChangeKey = vectorSource.on('change', function() {
  if (vectorSource.getState() == 'ready') {
    vectorSource.unByKey(onChangeKey);
    map.getView().fitExtent(vectorSource.getExtent(), map.getSize());
  }
});

// fitExtent is now fit and second arg map.getSize() is now optional
// e.g http://openlayers.org/en/latest/apidoc/ol.View.html#fit 
map.getView().fit(vectorSource.getExtent());