OpenLayers 3实践与原理探究2-ol3基础入门案例

12 篇文章 1 订阅
9 篇文章 0 订阅

【注】所有代码挂在我的github

0.实例

在OpenLayers3官网的下载页面下载我们在开发工程中需要的文件(如:v3.17.1-dist.zip),实际工程中包含两个文件ol.js,ol.css
先看一个实例代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>1-TileWMS</title>
    <link rel="stylesheet" href="css/ol.css">
</head>

<body>
    <div id="map">
    </div>
    <script type="text/javascript" src="js/ol-debug.js"></script>
    <script type="text/javascript">
    /*初始化地图*/
    var map = new ol.Map({
        target: 'map', //document.getElementById("map")

        layers: [
            new ol.layer.Tile({
                title: "Global Imagery",
                source: new ol.source.TileWMS({
                    url: 'http://demo.boundlessgeo.com/geoserver/wms',
                    params: {
                        'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
                    }
                })
            })
        ],
        view: new ol.View({
            projection: 'EPSG:4326', //WGS 84
            center: [0, 0],
            zoom: 2,
            maxResolution: 0.703125
        }),

    });
    </script>
</body>

</html>

效果图:
ol3讲解实例效果图

通过api的overview我们可以看到ol3的核心部件
ol3-api-overview

1.基本概念

ol3基本概念的关系

1.1 Map

Map(ol.Map)是OL3的核心部件,它被呈现在target容器上(div)。也可以使用setTarget方法。
位置:ol/ol/map.js

var map = new ol.Map({target: 'map'});

1.2 View

ol.View负责地图的中心点,放大,投影之类的设置。
一个ol.View实例包含投影projection,该投影决定中心center 的坐标系以及分辨率的单位,如果没有指定(如下面的代码段),默认的投影是球墨卡托(EPSG:3857),以米为地图单位。

放大zoom 选项是一种方便的方式来指定地图的分辨率,可用的缩放级别由maxZoom (默认值为28)、zoomFactor (默认值为2)、maxResolution (默认由投影在256×256像素瓦片的有效成都来计算) 决定。起始于缩放级别0,以每像素maxResolution 的单位为分辨率,后续的缩放级别是通过zoomFactor区分之前的缩放级别的分辨率来计算的,直到缩放级别达到maxZoom 。

var map = new ol.Map({
    target: 'map',
    view: new ol.View({
            projection: 'EPSG:4326', //WGS 84
            center: [0, 0],
            zoom: 2,
            maxResolution: 0.703125
        }),

});

1.3 Source

OpenLayers 3使用ol.source.Source子类获取远程数据图层,包含免费的和商业的地图瓦片服务,如OpenStreetMap、Bing、OGC资源(WMS或WMTS)、矢量数据(GeoJSON格式、KML格式…)等。

var osmSource = new ol.source.OSM();

1.4 Layer

一个图层是资源中数据的可视化显示,OpenLayers 3包含三种基本图层类型:ol.layer.Tile(瓦片)ol.layer.Image(图片样式的图层)和 ol.layer.Vector(矢量图层)

  • ol.layer.Tile 用于显示瓦片资源,这些瓦片提供了预渲染,并且由特定分别率的缩放级别组织的瓦片图片网格组成。
  • ol.layer.Image用于显示支持渲染服务的图片,这些图片可用于任意范围和分辨率。
  • ol.layer.Vector用于显示在客户端渲染的矢量数据。
var osmLayer = new ol.layer.Tile({source: osmSource}); map.addLayer(osmLayer);

1.5 控件与交互

1.5.1 控件

var map = new ol.Map({
    controls: ol.control.defaults().extend([
        new ol.control.FullScreen(), //全屏控件
        new ol.control.ScaleLine(), //比例尺
        new ol.control.OverviewMap(), //鹰眼控件
        new ol.control.Zoom(),
    ]),
    layers: [bglayer, vector], //添加两个图层
    target: 'map', //div#id='map'
});

1.5.2 交互

var select = new ol.interaction.Select({
    wrapX: false
});

var modify = new ol.interaction.Modify({
    features: select.getFeatures()
});
var map = new ol.Map({
    layers: [bglayer, vector], //添加两个图层
    target: 'map', //div#id='map'
    interaction:ol.interaction.defaults().extend([select, modify])
});

或者用方法的方式添加:

draw = new ol.interaction.Draw({
        source: source,
        type: /** @type {ol.geom.GeometryType} */ (shapeName),
        geometryFunction: geometryFunction,
        maxPoints: maxPoints
    });
map.addInteraction(draw); //增加的交互
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值