ArcGIS API for JavaScript - 如何在地图边缘停止infoWindow裁剪?

时间:2013-10-03 16:18:02

标签: javascript infowindow esri arcgis-js-api

我正在使用esri的ArcGIS API for JavaScript版本3.6,并且有一个小地图(桌面上约400像素方块),只要用户将鼠标放在某个功能上,就会显示一个信息窗口Popup。

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

以下是裁剪信息窗口的图片(抱歉,我没有足够的代表发布图片):

Info window getting copped

编辑:

我试过像这样设置infoWindow的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来包含弹出窗口。虽然没有运气。

2 个答案:

答案 0 :(得分:1)

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

下面是示例代码:

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
        });

随意拍摄你的疑问..

希望这会对你有所帮助:)

答案 1 :(得分:0)

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

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