从零编写Openlayers前端系统(2、显示地图)

        从决定写这个前端程序到着手,其实只有几周的时间,JS的使用也是边学边练,更不谈Openlayers了。补充说明下,使用的Openlayers是3.X的版本,HTML采用的是ES5。

        参考了网上大神和Openlayers官网,本人着手写上第一段代码。具体如下:

wms_url =  'http://172.16.40.159:8086/geoserver/wangxiang/wms';

wms_layer ='wangxiang:aa_pol';

format = 'image/png';

bounds = [31120.72077001582, -31306.5768763267, 33942.44450440404,-26589.81571753572];   //范围

 //本地SHP实例

wmsSource=new ol.source.ImageWMS({

                ratio: 1,

                url: wms_url,                   //自己的服务url

                params: {                         //设置服务参数

                    'FORMAT': format,

                    'VERSION': '1.1.1',

                    STYLES: '',

                    LAYERS: wms_layer,           //图层信息

                }

  })

wmsLayer=new ol.layer.Image({ 

                          source:wmsSource 

                                });

 //设置地图投影

projection = new ol.proj.Projection({

           code: 'EPSG:3857',//投影编码

           units: 'degrees',

           axisOrientation: 'neu'

 });


view=new ol.View({      //设置视图

           projection: projection   //设置投影

 });

//设置地图

map = new ol.Map({

           controls: ol.control.defaults({     //地图中的比例尺等控制要素

                attribution: false

           }).extend([

           new ol.control.ScaleLine()

           ]),

           target: 'map',           //设置显示的容器

           layers: [],                //设置图层  

           view: view

 });

function init(){

    map.addLayer(wmsLayer);

    map.getView().fit(bounds,map.getSize());    //地图显示

};

<body onload="init()"> </body>

        这段代码是我万里长征的第一步,可以说是网上直接挪过来的,经调试后,已能显示地图。很开心。。。。再补充说明几点吧。

        1、wmsSource里的参数

        先要学会用Geoserver。在设置好Geoserver后(这个网上有好多教程,不抄了),点击:Layer Preview

        然后在要预览的GIS数据栏上点击

        然后就能以WMS的PNG方式预览了,这时的预览地址为:

       http://172.16.40.159:8086/geoserver/wx/wms?service=WMS&version=1.1.0&request=GetMap&layers=wx:aa_pol&styles=&bbox=31120.72077001582,-31306.5768763267,33942.44450440404,-26589.81571753572&width=459&height=768&srs=EPSG:3857&format=image%2Fpng

        好长一段,分段看就不复杂了。

        (1)服务器地址,很明显就是“ http://172.16.40.159:8086/geoserver/wx/wms”,“?”后是这个服务器的GET参数,这个结构很清晰。

        (2) params类中的参数,以及bounds,也很明显,就是“?”后的各项参数,每项参数的具体含义,参见:

                    http://www.cnblogs.com/naaoveGIS/p/5508882.html

        2、这段代码其实和Geoserver的preview的作用一样的,我当时就想,为什么不能直接用这个预览地址呢?由于代码是抄的,别人没提及,也不知道,其实对于WMS方式,还有种懒惰写法,就是直接将preview的地址粘入JS中即可:

wms_url="http://172.16.40.159:8086/geoser.......768&srs=EPSG:3857&format=image%2Fpng"

wmsSource=new ol.source.ImageWMS({

                ratio: 1,

                url: wms_url               

  })

        这就可以了:)

        3、“map.getView().fit(bounds,map.getSize())” 这句刷新地图的代码。这段代码搞了好多时间。不是因为代码不对,而是因为Openlayers3和Openlayers2的刷新方式不同,在读别人的代码时,当时还不是很理解,所以一直用Openlayers2的刷新代码,因此一直不能显示地图。血的教训

        4、为十么用WMS的方式显示地图呢?很简单,当时还很无知。大神们这么写,我就这么用。后来才觉得,可能因为其他大神的代码往往是从大型GIS数据库中汲取数据,数据若以矢量数据方式获取,服务器需提供矢量瓦片地图,但目前大多开发地图都不提供矢量瓦片地图数据,只提供栅格图片,所以我觉得大神们的示例也因此大多采用WMS获取数据。其实我的程序用WMS方式不是最好的办法,后来被我改了。那是后话......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343