最近忙于一些项目验收,之前准备了好几篇文章,都没来得及发,今天来点不一样的,OpenLayers,看到网上大多数都很敷衍,明明简单的、明了的却写的弯弯绕绕,想说不想说的样子,呵呵!!!直接上干货,简单明了
1.map
因为我这里的服务都是ArcGIS发布的,所以这的layer我会用ArcGIS93Rest;
map = new OpenLayers.Map(“myDiv”,options);
var layer=new OpenLayers.Layer.ArcGIS93Rest(“xzq”,
“http://192.168.1.114:6080/arcgis/rest/services/epyzt/JCC_EPXZQ/MapServer/export",
{layers:”0”})
map.addLayer(layer)
这里要注意的的是arcgis的服务最后要加上export;字符串的option可以随便写,但一定要有意义。这样你的后面的项目越大,内容越多的时候,才不至于把自己绕进去。 上面我留了一个opions没有定义。options是一个对象,这个options的内容实在是太多了。我一般只会在定义一下初始化map的一些范围
2.options
var options={
displayProjection:”2361”,
resolutions:[
78271.66821448227,
39135.83675440268,
19567.91837587842,
……
],
controls:[
new OpenLayers.Control.Navigation({}),
new OpenLayers.Control.PanZoomBar({}),
new OpenLayers.Control.LayerSwitcher({}),
new OpenLayers.Control.MousePosition({}),
new OpenLayers.Control.Permalink()
]
}
像这样,就是在初始化的时候定义了一些东西,resolutions是递减的,值得注意的是controls,一个就是这种用法,还有一种就是初始化之后通过map.addControl()/addControls([]),加上去,后面我会说一些这样的方法。
3.放大、缩小
4.Draw
这个思路掌握了,也就好说了。首先得加个Vector到地图上去,我们的每次draw都是再这个图层上操作的
funciton draw(){
lineLayer=new OpenLayers.Layer.Vector(“lineLayer”);
map.addLayer(lineLayer);
controlLineLayer=new OpenLayers.Control.DrawFeature(
lineLayer,
OpenLayers.Handler.Path,
{…}
)
map.addControl(controlLineLayer);
}
5.measure
这个是测量面积或者距离用的。
function measure (){
measureControls=new OpenLayers.Control.Measure(
OpenLayers.Handler.Path,{ //测距就是Path,面积就是Polygon
persist: true,
immediate:true,//当该属性为true时,量算过程中时时显示结果,同时会触发 “measurepartial” 事件.
autoActivate:true////本来该单独控制active()的,这演示就直接auto了;
}
)
measureControls.events.on({ //一个事件监听
“measure”:measureEvents,//当量算完成时触发. 需要传入当前绘制要素的geometry信息作为参数, 返回measure、units、order、geometry信息
“measurepartial”:measureEvents //当点被添加到量算过程中或timmediate 属性设为true,修改量算过程时触发. 返回measure、units、order、geometry信息。
})
map.addControl(measureControls)
}
function measureEvents(eve){
var iDiv=document.getElementById(“input”);
if(eve.order==1){
iDiv.innerHTML=eve.measure+eve.units;
}else{
iDiv.innerHTML=””+eve.measure+eve.units+”2“;
}
}
值得注意的是返回的geometry中,measure:表示测量结果;units:测量单位;order:order=1时表示距离测量;order=2时表示面积测量;geometry:绘制后的几何图形信息。