jsapi 3.x如何实现:可同时存在多个,不与图层绑定而是用代码弹出,样式可完全自定义的弹窗?
1.可同时存在多个(官网的要绑定到map的infowindow属性那就只能存在一个)
2.不需与图层绑定,而是用代码传入坐标弹出,也可以用代码关闭
3.内容的html与css完全可自定义(也就是jsapi只提供一个空白的div)
如果4.x有解决方案亦可
谢谢!!
2.不需与图层绑定,而是用代码传入坐标弹出,也可以用代码关闭
3.内容的html与css完全可自定义(也就是jsapi只提供一个空白的div)
如果4.x有解决方案亦可
谢谢!!
3 个回复
mushroom
赞同来自:
里的tooltip应该就是你要的东西吧
binghuan123 - 80后
赞同来自:
下面给个简单的例子,第一个是继承GraphicsLayer的重写方法,第二个是继承Graphic的重写方法
_draw: function (graphic, force){
var map = this._map;
var mapDiv = document.getElementById(map.id);
var visibleRect = map.__visibleRect;
if (!mapDiv) return;
var screenPoint = null;
if (this.panExtent)
screenPoint = esri.geometry.toScreenPoint(this.panExtent, map.width, map.height, graphic.geometry);
else
screenPoint = esri.geometry.toScreenPoint(map.extent, map.width, map.height, graphic.geometry);
var width = graphic.getWidth();
var height = graphic.getHeight();
var x = screenPoint.x - width / 2;
var y = screenPoint.y - height / 2;
var pieDiv = graphic.containerDiv;
if (pieDiv) {
pieDiv.style.top = y + "px";
pieDiv.style.left = x + "px";
return;
}
pieDiv = document.createElement("div");
pieDiv.id = graphic.id ? graphic.id : ("chartElement" + this.graphics.length);
graphic.id = pieDiv.id;
pieDiv.style.position = "absolute";
pieDiv.style.top = y + "px";
pieDiv.style.left = x + "px";
pieDiv.style.width = graphic.getWidth() + "px";
pieDiv.style.height = graphic.getHeight() + "px";
pieDiv.style.margin = "0px";
pieDiv.style.padding = "0px";
mapDiv.appendChild(pieDiv);
graphic.containerDiv = pieDiv;
graphic._draw(pieDiv);
}
//重写graphic的_draw方法
_draw: function (container) {
var labelHtml = '';
var labelContent = container;
if (this.attribute) {
labelHtml +='自定义的 根据属性拼接的html'
}
labelContent.innerHTML = labelHtml;
},
cannel
赞同来自:
http://zhihu.esrichina.com.cn/article/3824
要回复问题请先登录或注册
发起人
相关问题
问题状态