快速入手openlayers-基本概念理解

首先对其有一个宏观的认识,下面用一个图来说:

图1出自百度学习教程

图2出自扯淡大叔教材

  • 接下来,我们开始干正事。一个一个对其进行了解。

Map

  • openlayers 最核心的是ol.Map。它被呈现到对象target容器中。(例如,dom的div就可以算上其一)所有地图属性可以在构造时对其进行配置,或者通过setter方法,如settarget().
    3.png

    4.png

View

  • ol.View()负责的是地图的中心点设置、放大、投影等之类的设置。
  • 一个ol.View中包含投影projection,该投影决定center坐标系和分辨率单位,如果没对其进行设置指定,则使用的是球墨卡托(ESPG:3857),以米为单位。
  • 放大Zoom选项是一种便捷的方式指定地图的分辨率,可用的缩放级别由maxzoom(默认为28),zoomFactor(默认值是2),maxResolution默认投影是256*256像素瓦片的有效长度对其进行计算。起始缩放级别是0,以每个像素maxResolution的单位分辨率,后续的缩放级别是由之前的缩放级别对其进行计算的,直到缩放级别达到maxZoom。

    5.png

  • 当然怎么使用呢?首先可以回忆一下Map和View的关系,然后通过面向对象的思想对其进行实例化,对其进行设置。

    var view =new ol.View({
        //对其再次进行回忆,三个属性成员和一个投影
        center:[x,y],
        //分辨率,nummber or undefined.相当于设置比例尺
        resolution:2, 
        //旋转角度:顺时针弧度值,参数为旋转的角度对应的值,并不是度数,如Math.PI
        rotation:0//投影信息
        projection:'ESPG:3857'
    });
    //设置完成后将其作为Map的set属性值进行设置
    var map=new Map({
    });
    map.setView(view);
    //搞定!

Source

  • ol.source使用其子类对远程数据进行获取,包含商业和免费的地图切面服务,如OpenStreetMap、Bing、OGC资源(WMS、或者[WMTS][https://baike.baidu.com/item/WMTS/1091367?fr=aladdin]),矢量数据(Geojson格式、KML格式等)。
    6.png

  • 当对每个图层简单搜索了解后,可以神奇的发现ol开源的东西太强大了。

Layer

  • 一个图层是资源的可视化显示。这句话简单明了的说明Layer和Source之间的关系,用UML用例图来说,这两者之间的关系就是,就是
  • ol 包含三种不基本数据类型:ol.layer.Tile、ol.layer.Vector、ol.layer.Image三类。

    • 第一种ol.layer.Tile:用于显示瓦片资源,这些瓦片提供了预渲染,并且由特定分辨率的缩放级别组织瓦片图片网格形成。
      7.png

    • 第二种就是ol.layer.Vector:用于显示客户渲染的矢量数据。

      8.png

    • 第三种是ol.layer.Image是用于显示支持渲染服务的图片,这些图片可以是任意范围和任意的分辨率。
      9.png

      //谈谈简单用法吧!首先对前面涉及到的进行回忆,其结构是ol.layer中存在ol.source。
      //所以我们可以这么写
      var layer=new ol.layer.ImageLayer();
      //设置ol.source
      var source=new ol.source.BingMaps();
      //其他属性设置为默认
      //当然还有一些其他属性是必须的,在这里为了突出重点不予显示声明
      layer.setSource(source);//set a layer source.
      ... //还可以设置其他属性

总结

  • ol.Map中有layers属性成员,其对应的是一个数组,要对其进行注意。

        <script type="text/javascript">
              var map = new ol.Map({
              target: 'map',
              layers: [
                  new ol.layer.Tile({
                  source: new ol.source.OSM()
              })
              ],
             view: new ol.View({
              //ol.proj.fromLonLat([37.41, 8.82]),
              center: [37.41, 8.82],
              zoom: 4,
              rotation:MATH.PI*0.25,
              projection:""
            })
          });
    
        </script>
  • 设置最后的显示效果:

    10.png

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值