ArcGIS API for JavaScript - 如何在地图边缘停止信息窗口裁剪

ArcGIS API for JavaScript - How to stop infoWindow cropping at map edge?

本文关键字:边缘 信息 信息窗 裁剪 窗口 地图 for API JavaScript ArcGIS      更新时间:2023-09-26

我正在使用 esri 的 ArcGIS API for JavaScript 3.6 版本,并且有一个小地图(桌面上的 ~400px 正方形),每当用户将鼠标悬停在要素上时,它都会显示一个信息窗口弹出窗口。

如果信息窗口

显示在地图边缘附近,则信息窗口将被裁剪以适合地图边界。我想让信息窗口内容溢出并完全可见,有没有办法在 ArcGIS 框架之外滚动我自己的弹出窗口?

这是信息窗口被裁剪的图片(对不起,我没有足够的代表来发布图像):

信息窗口被处理

编辑:

我尝试像这样设置信息窗口的 domNode:

var myDiv = some_div_far_awary;
var infoWindow = new esri.dijit.InfoWindow({}, myDiv);
infoWindow.startup();
var map = new esri.Map("my-map-div", {
  // Other configs...
  infoWindow: infoWindow
});

希望如果some_div_far_away在地图div 之外并且绝对定位,它可以显示在地图上,这只是使用 overflow:hidden 来包含弹出窗口。不过运气不好。

好吧,我不确定为什么我们需要添加具有一些预定义样式的信息窗口容器。正如您在评论"范围更改的昂贵计算"中提到的,所以我不建议您更改地图范围,我认为您可以根据您的窗口大小设置信息窗口(以最大合适大小重新调整信息窗口的大小)。

下面是示例代码:

var infoWindow = new esri.dijit.InfoWindow({}, dojo.create("div"));
    infoWindow.startup();    
var map = new esri.Map("map", {
          // Other configs... 
          infoWindow: infoWindow
       });

要重新调整信息窗口,您可以使用:

 map.infoWindow.resize(100,100); // resize(width,height)

我想在这里建议的另一种方法是,如果您认为这是一个正确显示信息窗口的小地方,为什么不使用移动弹出窗口......他们真的很酷。

下面是代码:

 var popup = new esri.dijit.PopupMobile(null, dojo.create("div"));
 var map = new Map("map", {
          basemap: "gray",
          center: [-98.57, 39.82],
          zoom: 4,
          infoWindow: popup
        });

随意拍摄您的查询..

希望这对您有所帮助:)

因此,信息模板无意避免这种情况,因为相对于坐标有一个浮动面板,导致错误,因为您无法确定哪些点引用浮动面板。

您可以在地图左侧的另一个div 中显示要素的字段,也可以使用 map.centerAt(mappoint)map.centerAndZoom(mappoint,level) 这样您的信息模板就不会被裁剪,因为您将集中信息窗口。