ArcGIS API for JavaScript-如何在地图边缘停止信息窗口裁剪?
我正在使用esri的ArcGIS API for JavaScript 3.6版,并且有一个小地图(桌面上约400px的正方形),每当用户将鼠标移到某个功能上时,该地图就会显示一个信息窗口弹出窗口 如果信息窗口显示在地图边缘附近,则信息窗口将被裁剪以适合地图边界。我想让信息窗口内容溢出并完全可见,除了在ArcGIS框架外滚动我自己的弹出窗口外,还有什么方法可以做到这一点 以下是信息窗口被裁剪的图片(抱歉,我没有足够的代表发布图片): 编辑: 我尝试将infoWindow的domNode设置为:ArcGIS API for JavaScript-如何在地图边缘停止信息窗口裁剪?,javascript,infowindow,esri,arcgis-js-api,Javascript,Infowindow,Esri,Arcgis Js Api,我正在使用esri的ArcGIS API for JavaScript 3.6版,并且有一个小地图(桌面上约400px的正方形),每当用户将鼠标移到某个功能上时,该地图就会显示一个信息窗口弹出窗口 如果信息窗口显示在地图边缘附近,则信息窗口将被裁剪以适合地图边界。我想让信息窗口内容溢出并完全可见,除了在ArcGIS框架外滚动我自己的弹出窗口外,还有什么方法可以做到这一点 以下是信息窗口被裁剪的图片(抱歉,我没有足够的代表发布图片): 编辑: 我尝试将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
});
希望如果
一些遥远的
在map div之外,并且绝对定位它可以显示在地图上,而这只是使用overflow:hidden
来包含弹出窗口。不过运气不好。因此,信息模板无意避免这种情况,因为相对于坐标的浮动面板会导致错误,因为您无法确定哪些点引用浮动面板
您可以在地图左侧的另一个div中显示要素的字段,也可以使用
map.centerAt(mappoint)
或map.centerAndZoom(mappoint,level)
这样您的信息模板就不会被裁剪,因为您将集中您的信息窗口。,我不知道为什么我们需要添加一些预定义样式的信息窗口容器。正如您在评论“范围更改的昂贵计算”中提到的,因此我不建议您更改地图范围。我认为您可以根据您的窗口大小设置信息窗口(使用最大合适的大小重新调整信息窗口的大小)
下面是示例代码:
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中显示信息窗口内容(占用不动产,这才是信息窗口的预期用途)。对我来说,重新将地图居中也不是一个选择(对范围变化进行昂贵的计算)。感觉必须有办法通过为infoWindow设置一个
domNode
来实现这一点,否则infoWindow功能对于较小的地图来说毫无用处。对于较小的地图,您的解决方案可能是在功能周围添加一个文本注释。但是,我仍然认为在地图之外显示信息更适合您的情况,因为您不会创建一个以地图为中心资源的web地图应用程序,如果您的地图较小,那么地图就是一点信息。我也有同样的情况,但只有当我尝试使用map.infoWindow.resize(“500”、“200”)调整信息窗口大小时才会发生这种情况);代码>。如果我让infoWindow保持原样,它将检测地图的边缘。