openlayers-03-引入地图

开始之前,先介绍下当前ol的各个版本的不同。
ol2 最早也是流行很广的一个版本,不过这个版本随着js的不断迭代,已经显得力不从心了;
ol3 使用了新的设计模式从底层重写,更加符合主流的设计思路。
ol4.x-ol5.x 基于ol3进行了部分重构并新增了很多功能性API,整个逻辑架构变动并不是很大。
ol6.x-ol7.x 从6.0开始,ol不再向后兼容,组件化,降低内存,更多的webgl的支持等等。

其他的版本区别,可以自行在github查看。
https://github.com/openlayers/openlayers/releases

目前我工作中的主力使用的版本是ol5.3,这个版本可以直接在html中使用script引入ol的完整的js包,后期的
讲解也基本已该版本为主。从版本4.x-7.x基本逻辑架构其实还是一样的,只是组织实现形式不同。
在这里下载5.3版本 ol5.3

天地图
在网页上加载显示天地图,天地图对于搞gis的各位来说应该不算陌生,我就不介绍了。不了解的自行百度吧

直接上代码,说再多不如直接看代码来得快。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>加载天地图</title>
    <link href="ol/ol.css" rel="stylesheet" type="text/css" />
    <script src="ol/ol.js" type="text/javascript"></script>
    <style type="text/css">
        #mapCon {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <!-- 地图容器 -->
    <div id="mapCon"></div>

    <script type="text/javascript">
        //天地图密钥,可以自己注册申请,这里仅用于演示,不要用在实际项目中,随时可能失效
        var key = "4689fc6b9bc0fdc8c48298f751ebfb41";

        //ol.layer.Tile:是一个瓦片图层类,用于显示瓦片资源。
        //source是必填项,用于为图层设置来源。

        //ol.source.XYZ: 
        //创建天地图矢量图层
        var tdt_vec = new ol.layer.Tile({
            title: "天地图矢量图层",
            source: new ol.source.XYZ({
                url: "http://t{0-7}.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=" + key,
                wrapX: false
            })
        });
        //创建天地图矢量注记图层
        var tdt_cva = new ol.layer.Tile({
            title: "天地图矢量注记图层",
            source: new ol.source.XYZ({
                url: "http://t{0-7}.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=" + key,
            })
        });
        //实例化Map对象加载地图
        var map = new ol.Map({
            //地图容器div的ID
            target: 'mapCon',
            //地图容器中加载的图层
            layers: [tdt_vec, tdt_cva],
            //地图视图设置
            view: new ol.View({
                //地图初始中心点(经纬度)
                center: [0, 0],
                //地图初始显示级别
                zoom: 2,
                projection: "EPSG:3857"
            })
        });
    </script>
</body>
</html>

ol.Map 地图容器类

  • target: 指定dom元素的id
  • layers:指定加载的图层,这里是有顺序的,它接收一个图层数组对象,该数组的最后一个图层会在
    顶部显示,即你能看到的就是最顶部那个图层,比如上面两个tdt_vec, tdt_cva,如果交换了位置,
    就无法看到天地图矢量注记图层了,只能看到天地图矢量图层。图层也可以在后面通过ol.Map()的
    addLayer方法添加。
  • view:设置地图显示视图。也可以后期通过ol.Map()类的setView()方法指定,缺少该属性则不会提
    取图层源。

ol.View 视图类

  • center:地图初次加载时的中心点,接收一组经纬度坐标[117.2356,39.6325]
  • zoom:初次加载时的默认缩放层级
  • projection:地图的投影坐标系。默认为EPSG:3857,即墨卡托坐标系。
  • maxZoom:允许的最大缩放级别
  • minZoom:允许的最小缩放级别
  • rotation:设置初始视图的旋转弧度(顺时针方向)。

实现地图加载的流程

  1. 创建一个div,并设置id。
  2. 创建ol.Map对象,并指定上一步创建的div作为地图容器。
  3. 创建地图图层对象ol.layer.Tile,也可能是其他格式的图层对象,后面会有涉及。
  4. 为ol.Map对象设置layers、view。

示例代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值