我正在构建一个带有侧边栏的应用程序,该边栏默认在桌面应用程序上打开,并使用4.9的ArcGIS JavaScript API可用的 padding (example app)选项,我想边栏打开时,偏移屏幕的侧面。调整应用程序大小后,我想删除属性偏移并以某种方式刷新或重新加载原始视图。通过重新创建在地图上引起奇怪闪光的视图,我能够使它正常工作。我做了一个简单的jsfiddle,显示了与我想做的类似的事情。 https://jsfiddle.net/booshwa/t05ks1u4/。当用户单击“最新”按钮时,如果侧边栏处于打开状态,则会使用填充创建新视图;如果侧边栏处于隐藏状态,则会将填充设置为0。下面是jsfiddle中的JavaScript。
require([
"esri/Map",
"esri/views/MapView"
], function(
Map,
MapView
) {
// Create the Map
var map = new Map({
basemap: "topo"
});
// Create the view set the view padding to be 320 px from the right
var view = new MapView({
container: "viewDiv",
map: map,
center: [-74.045459, 40.690083], // Liberty Island, NY, USA
zoom: 16,
padding: {
right: 320 // Same value as the #sidebar width in CSS
}
});
var sidebar_open = true;
// Show / Hide the sidebar
$("#toggle_sidebar").click(function() {
if (sidebar_open) {
$("#sidebar").css({display: "none"});
} else {
$("#sidebar").css({display: "block"});
}
sidebar_open = !sidebar_open;
});
// Builds a new view based on if the sidebar is open or closed
$("#toggle_view").click(function() {
var padding = 0;
if (sidebar_open) {
padding = 320;
}
// Recreate the view to make the padding reset
// => Is this the only way to update a view?
view = new MapView({
container: "viewDiv",
map: map,
center: [-74.045459, 40.690083], // Liberty Island, NY, USA
zoom: 16,
padding: {
right: padding // Same value as the #sidebar width in CSS
}
});
});
});
答案 0 :(得分:1)
您只需要修改视图的DMA_base_ptr[DMA_CONTROL_OFFS] &= ~HW;
,然后使用padding
方法就可以将view.goTo
进行更新,如下所示:
https://jsfiddle.net/t05ks1u4/55/
mapView