openlayers鷹眼圖實現

這個是Cesium三維地圖結合openlayers二維地圖的鷹眼圖實現,代碼有相關注釋。

// 創建鷹眼圖
this.map = new Map({
    layers: [layers_arcgis],
    target: 'map2d',
    view: new View({
        projection: 'EPSG:4326',
        center: [116.240601, 39.827107],
        zoom: 13
    })
});
// 添加Cesium 視圖監聽事件
this.viewer.scene.postRender.addEventListener(this.sceneRenderHandler, this);

// 監聽事件所執行的方法
sceneRenderHandler: function (e) {
    let extend = mars3d.point.getExtent(this.viewer);  //獲取Cesium當前視圖的範圍
    let point = mars3d.point.getCenter(this.viewer);  //獲取Cesium當前視圖的中心點

    if (extend.xmin == -180 && extend.xmax == 180
        && extend.ymax == 90 && extend.ymin == -90) { //整個地球在視域內
        this.map.getView().setZoom(2);
        this.map.getView().animate({
            center: [point.x, point.y],
            duration: 0
        });
    } else {
        // 根據當前地圖範圍和大小獲取 分辨率
        let r = this.map.getView().getResolutionForExtent([extend.xmin, extend.ymin, extend.xmax, extend.ymax], this.map.getSize());
        // 設置分辨率
        this.map.getView().setResolution(r);
        // 設置鷹眼圖中心點
        this.map.getView().setCenter(extentGetCenter([extend.xmin, extend.ymin, extend.xmax, extend.ymax]));
    }
}
發佈了46 篇原創文章 · 獲贊 17 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章