边界在OpenLayers 3中是如何工作的?

边界在OpenLayers 3中是如何工作的?,openlayers,openlayers-3,Openlayers,Openlayers 3,在OpenLayers 3中是否仍然存在来自OpenLayers 2.x的概念?它是如何改变的,它的新名称是什么?更新:OL4: “边界”或“边界框”(BBOX)的新词似乎是“范围”。 见: 目前查明情况的一种方法是在OL3回购协议中进行搜索,例如: 只需为答案添加一个小例子: 边界现在被称为“范围”,它不再是一个复杂的对象/类,而只是一个由四个数字组成的数组。“ol.extent”中有一系列用于转换等的辅助函数。仅举一个小例子,说明如何转换: 到目前为止,我无法在中找到API文档

在OpenLayers 3中是否仍然存在来自OpenLayers 2.x的概念?它是如何改变的,它的新名称是什么?

更新:OL4:

“边界”或“边界框”(BBOX)的新词似乎是“范围”。 见:

目前查明情况的一种方法是在OL3回购协议中进行搜索,例如:

只需为答案添加一个小例子: 边界现在被称为“范围”,它不再是一个复杂的对象/类,而只是一个由四个数字组成的数组。“ol.extent”中有一系列用于转换等的辅助函数。仅举一个小例子,说明如何转换:

到目前为止,我无法在中找到API文档,因此您必须阅读以获取信息

自测试版以来,API文档已经完成。你现在就能找到了。


如评论中所述,正确的API函数现在是。

未找到有关此功能的任何文档,但范围似乎可以工作:

var vectorSources = new ol.source.Vector();
var map = new ol.Map({
  target: map_id,
  layers: [
    new ol.layer.Tile({
      source: ol.source.OSM()
    }),
    new ol.layer.Vector({
      source: vectorSources
    })
  ],
  view: new ol.View({
    center: [0, 0],
    zoom: 12
  })
});

var feature1 = new ol.Feature({
  geometry: new ol.geom.Point(coords)
});
vectorSources.addFeature(feature1);
var feature2 = new ol.Feature({
  geometry: new ol.geom.Point(coords)
});
vectorSources.addFeature(feature2);
map.getView().fitExtent(vectorSources.getExtent(), map.getSize());
方法
vectorSources.getExtent()
也可以被任何区段对象替换,如下所示:

map.getView().fitExtent([1,43,8,45],map.getSize())

自OpenLayer 3.9以来,方法发生了变化:


map.getView().fit(vectorSources.getExtent(),map.getSize())

在OpenLayers 3.17.1上,在尝试了各种方法后,我能够以两种不同的方式设置边界:

A) 同样,使用
ol.proj.transformExtent
函数,如下所示:

var extent = ol.proj.transformExtent(
    [-0.6860987, 50.9395474, -0.2833177, 50.7948214],
    "EPSG:4326", "EPSG:3857"
);

map.getView().fit( extent, map.getSize() );
B) 有点不寻常,使用
ol.geom.Polygon
如下:

// EPSG:3857 is optional as it is the default value
var a = ol.proj.fromLonLat( [-0.6860987, 50.9395474], "EPSG:3857" ),
    b = ol.proj.fromLonLat( [-0.2833177, 50.7948214], "EPSG:3857" ),
    extent = new ol.geom.Polygon([[a, b]]);

map.getView().fit( extent, map.getSize() );

对于这些问题,我可以给你一些代表:),新标签将证明非常有用,因为OL3与OL3不兼容,目前必须同时使用这两个标签,否则没有人会看到这些问题。我的意思是“因为OL3与OL2不兼容”,谢谢。这似乎就是文档目前的范围:我认为ol.extent.transform已重命名为ol.extent.applyTransform用于转换范围的函数是
ol.proj.transformExtent
。谢谢。在编写本文时,此函数不存在。:-)var mapExtent=map.getView().calculateExtent(map.getSize());
var extent = ol.proj.transformExtent(
    [-0.6860987, 50.9395474, -0.2833177, 50.7948214],
    "EPSG:4326", "EPSG:3857"
);

map.getView().fit( extent, map.getSize() );
// EPSG:3857 is optional as it is the default value
var a = ol.proj.fromLonLat( [-0.6860987, 50.9395474], "EPSG:3857" ),
    b = ol.proj.fromLonLat( [-0.2833177, 50.7948214], "EPSG:3857" ),
    extent = new ol.geom.Polygon([[a, b]]);

map.getView().fit( extent, map.getSize() );