OpenLayers3實(shí)現(xiàn)地圖顯示功能
本文實(shí)例為大家分享了OpenLayers3實(shí)現(xiàn)地圖顯示的具體代碼,供大家參考,具體內(nèi)容如下
1.配置開(kāi)發(fā)環(huán)境
使用OpenLayers 3開(kāi)發(fā)WebGIS應(yīng)用,我們首先需要配置開(kāi)發(fā)環(huán)境,首先我們需要在openlayers官網(wǎng)獲取OpenLayers 3的開(kāi)發(fā)庫(kù)。下載鏈接:官網(wǎng)。打開(kāi)后如圖所示:
需要注意的是這里下載有兩個(gè)版本,①:僅包括開(kāi)發(fā)庫(kù)(開(kāi)發(fā)與調(diào)試的JS庫(kù)以及CSS文件),②:包括開(kāi)發(fā)庫(kù)、開(kāi)發(fā)庫(kù)源碼、示例、API等所有開(kāi)發(fā)資源。
在這里我下載了第一個(gè)版本,下載后如圖所示:
2. 顯示一個(gè)OSM瓦片地圖
這里我們介紹基于OpenLayers 3 API顯示一個(gè)OSM瓦片地圖(即OpenStreeMap的瓦片地圖)。
方法1
實(shí)現(xiàn)思路:對(duì)地圖的顯示,首先需要?jiǎng)?chuàng)建一個(gè)地圖容器對(duì)象(oL.Map類(lèi)),然后在容器里面加載圖層來(lái)實(shí)現(xiàn)。
實(shí)現(xiàn)步驟:
1.新建一個(gè)文件夾,用于我們編寫(xiě)網(wǎng)頁(yè),然后在文件夾中新建js文件夾,以及css文件夾,首先我們將前面下載的OpenLayers 3 的開(kāi)發(fā)庫(kù)和樣式文件(ol.js、ol.css)復(fù)制到j(luò)s文件夾中。
2.在文件夾中新建一個(gè)HTML網(wǎng)頁(yè),在網(wǎng)頁(yè)的head 標(biāo)簽中引入ol.js與ol.css。
3.在網(wǎng)頁(yè)body 中新建一個(gè)div作為地圖容器,設(shè)置其id為“map”,并通過(guò)css設(shè)置來(lái)設(shè)置容器的樣式。
4.編寫(xiě)代碼創(chuàng)建一個(gè)地圖容器對(duì)象(ol.Map),通過(guò)target參數(shù)關(guān)聯(lián)到目標(biāo)容器(id為“map”的div),通過(guò)view參數(shù)設(shè)置地圖視圖(ol.View)。
實(shí)現(xiàn)代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>加載OSM地圖</title> <!-- 引入ol.css,以及ol.css --> <link rel="stylesheet" href="css/ol.css" > <script src="js/ol.js"></script> <style> #map { width: 100%; height: 100%; position: absolute; } </style> </head> <body> <div id="map"></div> <script type="text/javascript"> //實(shí)例化Map對(duì)象,用于加載地圖 var map = new ol.Map({ target: 'map', //地圖容器div的id //設(shè)置在地圖容器中加載圖層 layers: [ //加載瓦片圖層 new ol.layer.Tile({ //圖層對(duì)應(yīng)的數(shù)據(jù)源,這里為加載OpenStreetMap在線瓦片服務(wù)數(shù)據(jù) source: new ol.source.OSM() }) ], //地圖視圖設(shè)置 view: new ol.View({ center: [32, 113], //地圖顯示的初始中心 zoom: 2 //地圖初始顯示的級(jí)別 }) }); </script> </body> </html>
代碼說(shuō)明:首先這是一種最簡(jiǎn)單的靜態(tài)加載地圖的方法,我們?cè)诔跏蓟环貓D(map)時(shí),至少需要一個(gè)可視區(qū)域(View),以及在可以區(qū)域中顯示的一個(gè)或者多個(gè)圖層(layer),和一個(gè)地圖加載的目標(biāo)標(biāo)簽(target)。所以通過(guò)target、layers、view參數(shù)來(lái)設(shè)置加載地圖必須的瓦片圖層、地圖視圖和加載的目標(biāo)HTML標(biāo)簽。
1.ol.Map:地圖容器類(lèi),是OpenLayers 3 的核心部件,用于顯示地圖,可以加載各種類(lèi)型的圖層,加載地圖控件(比例尺,鷹眼,地圖的縮放等等),以及與地圖交互的功能控件等。通過(guò)實(shí)例化地圖容器對(duì)象來(lái)加載地圖,并對(duì)target、layers、view參數(shù)進(jìn)行設(shè)置,這是地圖加載的必備三要素。
2.ol.layer.Tile:瓦片圖層類(lèi),主要用于加載瓦片圖層,可以通過(guò)實(shí)例化瓦片圖層對(duì)象,綁定數(shù)據(jù)源(source)加載對(duì)應(yīng)的瓦片圖層。
3.ol.source.OSM :封裝的OpenStreetMap在線瓦片服務(wù)數(shù)據(jù)的數(shù)據(jù)源類(lèi),創(chuàng)建此數(shù)據(jù)源對(duì)象并加載到瓦片圖層中。
ol.View:地圖視圖類(lèi),主要是控制地圖與人的交互,如縮放、調(diào)整地圖顯示分辨率以及旋轉(zhuǎn)地圖等。通過(guò)實(shí)例化地圖視圖對(duì)象,設(shè)置地圖的中心點(diǎn)(center)、初試顯示中心(zoom)等參數(shù)。
在加載圖層是,除了通過(guò)layers參數(shù)來(lái)設(shè)置地圖這種方式外,Map也提供了addLayer方法動(dòng)態(tài)加載圖層對(duì)象。例如加載圖層的代碼如下:
<div id="map"></div> <script type="text/javascript"> //實(shí)例化Map對(duì)象,用于加載地圖 var map = new ol.Map({ target: 'map', //地圖容器div的id //設(shè)置在地圖容器中加載圖層 layers: [], //地圖視圖設(shè)置 view: new ol.View({ center: [32, 113], //地圖顯示的初始中心 zoom: 2 //地圖初始顯示的級(jí)別 }) }); //實(shí)例化OSM瓦片地圖的瓦片圖層 var tileLayer = new ol.layer.Tile({ source: new ol.source.OSM() }); //將瓦片圖層添加到地圖容器中 map.addLayer(tileLayer); </script>
方法2
第一種方法是直接在HTML頁(yè)面中的 body 標(biāo)簽中加載地圖,這種方式在瀏覽器解析時(shí)按照順序加載執(zhí)行,第二種方法就是我們可以現(xiàn)在html頁(yè)面的head 的標(biāo)簽中編寫(xiě)javascript代碼,也就是說(shuō)寫(xiě)一個(gè)加載OSM地圖的init函數(shù),然后在網(wǎng)頁(yè)的 body 標(biāo)簽中由onload方法調(diào)用加載地圖的init函數(shù),這種加載方法在瀏覽器解析時(shí),首先加載javascript,當(dāng)加載頁(yè)面內(nèi)容時(shí)在調(diào)用處,再執(zhí)行相應(yīng)的javascript,實(shí)現(xiàn)頁(yè)面加載完成后立即加載地圖數(shù)據(jù)的功能。
代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>加載OSM地圖</title> <!-- 引入ol.css,以及ol.css --> <link rel="stylesheet" href="css/ol.css" > <script src="js/ol.js"></script> <style> #map { width: 100%; height: 100%; position: absolute; } </style> <script> function init() { //實(shí)例化Map對(duì)象,用于加載地圖 var map = new ol.Map({ target: 'map', //地圖容器div的id //在地圖容器中加載的圖層 layers: [ //加載瓦片圖層數(shù)據(jù) new ol.layer.Tile({ source: new ol.source.OSM() //加載osm瓦片 }) ], //地圖視圖設(shè)置 view: new ol.View({ center: [0, 0], zoom: 2 }) }); } </script> </head> <body onload="init()"> <div id="map"></div> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Openlayers實(shí)現(xiàn)地圖全屏顯示
- Openlayers學(xué)習(xí)之地圖比例尺控件
- Openlayers實(shí)現(xiàn)地圖的基本操作
- OpenLayers3實(shí)現(xiàn)地圖鷹眼以及地圖比例尺的添加
- OpenLayers3實(shí)現(xiàn)對(duì)地圖的基本操作
- openlayers實(shí)現(xiàn)地圖彈窗
- openlayers實(shí)現(xiàn)地圖測(cè)距測(cè)面
- vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果
- 使用OpenLayers3 添加地圖鼠標(biāo)右鍵菜單
- Openlayers繪制地圖標(biāo)注
相關(guān)文章
JavaScript實(shí)現(xiàn)基礎(chǔ)排序算法的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)基礎(chǔ)排序算法,如:冒泡排序、選擇排序、插入排序和快速排序,感興趣的可以了解一下2022-06-06JavaScript實(shí)現(xiàn)復(fù)制或剪切內(nèi)容到剪貼板功能的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)復(fù)制或剪切內(nèi)容到剪貼板功能的方法,我們平時(shí)看到的網(wǎng)頁(yè)上很多一鍵復(fù)制功能就是如此實(shí)現(xiàn),需要的朋友可以參考下2016-05-05地址欄傳遞中文參數(shù)亂碼在js里用escape轉(zhuǎn)碼
亂碼,頭大的一件事可以考慮轉(zhuǎn)碼方式不直接傳中文,在js里用escape轉(zhuǎn)碼,具體實(shí)現(xiàn)如下,有類(lèi)似情況的朋友可以參考下2013-08-08JavaScript實(shí)現(xiàn)LRU緩存的三種方式詳解
LRU全稱為L(zhǎng)east?Recently?Used,即最近使用的。針對(duì)的是在有限的內(nèi)存空間內(nèi),只緩存最近使用的數(shù)據(jù)(即get和set的數(shù)據(jù))。本文介紹了JavaScript實(shí)現(xiàn)LRU緩存的三種方式,需要的可以參考一下2022-06-06Kotlin學(xué)習(xí)第一步 kotlin語(yǔ)法特性
Kotlin學(xué)習(xí)第一步,從kotlin語(yǔ)法特性開(kāi)始學(xué)習(xí),包括變量定義、函數(shù)擴(kuò)展、Parcelable序列化、編寫(xiě)工具類(lèi)等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05關(guān)于javascript中偽數(shù)組和真數(shù)組的一些小秘密
在javascript中,偽數(shù)組又稱類(lèi)數(shù)組,是一個(gè)類(lèi)似數(shù)組的對(duì)象,是一種按照索引存儲(chǔ)數(shù)據(jù)且具有l(wèi)ength屬性的對(duì)象,下面這篇文章主要給大家介紹了關(guān)于javascript中偽數(shù)組和真數(shù)組的一些小秘密,需要的朋友可以參考下2022-08-08JavaScript數(shù)組實(shí)現(xiàn)扁平化四種方法詳解
扁平化,顧名思義就是減少?gòu)?fù)雜性裝飾,使其事物本身更簡(jiǎn)潔、簡(jiǎn)單,突出主題。數(shù)組扁平化,對(duì)著上面意思套也知道了,就是將一個(gè)復(fù)雜的嵌套多層的數(shù)組,一層一層的轉(zhuǎn)化為層級(jí)較少或者只有一層的數(shù)組2022-10-10