我使用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位于底部。我试过的两种解决方案都在那里,上面引用的是"在行动"。 我自己的笨拙代码也在那里 - 你会看到它。
必须有一个聪明的命令,对吧?
答案 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());