说明:
在地图操作中,有个功能,需要点击一个点,将视图定位到点击点的位置,并放大。
解决方案:
1、可以有openlayers中可以有ol.View来控制,但是在更改时,会将地图初始化时设置的maxZoom,minZoom等覆盖掉,因此需要在设置新的view前,重新设置一次初始化时的值,避免重复覆盖。
/**
* @description 地图定位中心并缩放事件
* @param {Map} _map 地图对象
* @param {Feature} _feature 要定位的要素
* @param {Number} _zoomLevel 缩放层级
*/
this.zoomAndCenter = function (_map, _feature, _zoomLevel) {
var my_view = new ol.View({
center: ol.extent.getCenter(_feature.getGeometry().getExtent()),//格式:[x,y]
zoom: _zoomLevel,
minZoom: _map.encmap.getView().getMinZoom(),
maxZoom: _map.encmap.getView().getMaxZoom()
});
_map.encmap.setView(my_view);
};
2、单独设置中心和缩放,推荐!
let view = _map.encmap.getView();
view.setZoom(_zoomLevel);
view.setCenter(ol.extent.getCenter(_feature.getGeometry().getExtent()));