得到某点的缓冲区并画圆
2009-09-06 00:00:00 来源:WEB开发网以上代码需要明确以下方面:
1.setcircle函数传入的参数是一个对象。为什么要传入对象而不直接传入字符串参数呢?因为传入对象可以允许调用这个方法的人只写要传入的参数即可,不需要每个参数都传。
2.传入的对象参数里的属性又包含一个对象。args.circleProp就是一个对象,它主要是传入一些将要画的圆的一些额外的属性,如你可以传入它的KEY,这样如果你画了若干个圆,就可以根据这个值来得到它更详尽的属性了。 3.displayed_circle是webmap的全局数组,用于保存每个圆对象。画线接口完成后,就可以在地图刷新完返回地图的状态后调用如下函数来画线,用到了VML技术, 如下:
Js代码
//地图刷新完画圆(缓冲区时用)
_RefreshCircle: function(){
document.getElementById('frontMap').innerHTML = '';
for(var i=0;i<this.displayed_circle.length;i++){
var o = this.displayed_circle[i];
var objCircle = document.createElement("v:oval");
var scale = this.getScale();
objCircle.style.width = o.width*100000*scale;
objCircle.style.height = o.height*100000*scale;
objCircle.style.left = (webmap.getMap().toScreenX(o.left)-o.width*100000*scale/2)+'px';//定位以左上角来定
objCircle.style.top = (webmap.getMap().toScreenY(o.top)-o.height*100000*scale/2)+'px';
objCircle.style.opacity = 0.8;
objCircle.style.filter = 'alpha(opacity=80)';
objCircle.style.fillcolor = '#99cccc';
objCircle.id = "objCircle";
objCircle.strokecolor = o.showColor;
if(o.showTitle)
objCircle.onmouseover = o.showTitle;
if(o.clickFun)
objCircle.onmousedown = o.clickFun;
if(o.circleProp) {
for(var key in o.circleProp){
circleProp[key] = o.circleProp[key];
}
}
document.getElementById("frontMap").appendChild(objCircle);
}
},
以上代码需要明确以下方面:
1.frontMap是地图div上的内的一个div,首先先把它清空,用innerHMTL=''来实现。
2.然后循环遍历displayed_circle数组,得到每一个圆对象的属性,放到VML建立好的圆元素里。
3.最后通过appendChild()把每个圆元素加到DIV进来。
4.这里要注意的是:objCircle.style.width,objCircle.style.height,objCircle.style.left,objCircle.style.top这四个值需要做相应地转化。
5.用如下方法把圆的属性增加进来: for(var key in o.circleProp){ circleProp[key] = o.circleProp[key]; }
注:这里不能用circleProp.key
更多精彩
赞助商链接