说明:
在地图操作中,有个功能,需要点击一个点,将视图定位到点击点的位置,并放大。
解决方案:
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()));