亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

OpenLayers3實(shí)現(xiàn)對(duì)地圖的基本操作

 更新時(shí)間:2020年09月28日 09:46:11   作者:jiegsier  
這篇文章主要為大家詳細(xì)介紹了OpenLayers3實(shí)現(xiàn)對(duì)地圖的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了OpenLayers3實(shí)現(xiàn)對(duì)地圖的基本操作代碼,供大家參考,具體內(nèi)容如下

1. 前言

對(duì)地圖的基本操作就是對(duì)地圖的放大、縮小、移動(dòng)、復(fù)位和更新等,通過(guò)使用OpenLayers 3 框架中操作地圖視圖(View)的相應(yīng)方法。

2. 實(shí)現(xiàn)思路

(1)新建一個(gè)網(wǎng)頁(yè),參照前面的文章加載OSM瓦片地圖,通過(guò)視圖設(shè)置地圖的最大、最小縮放級(jí)別以及初試旋轉(zhuǎn)角度,通過(guò)使用jQuery以及bootstrap來(lái)實(shí)現(xiàn)在縮放控件以及旋轉(zhuǎn)控件鼠標(biāo)懸停提示的效果。
(2)在地圖容器中新建4個(gè)按鈕(button),設(shè)置按鈕的id,通過(guò)css控制按鈕的樣式
(3)為每個(gè)按鈕添加 onclick 事件,在函數(shù)中調(diào)用 OpenLayer 3 中操作地圖視圖的相應(yīng)方法,來(lái)實(shí)現(xiàn)單擊放大、單擊縮小、移動(dòng)到某一位置以及復(fù)位功能。
(4)為縮放控件以及旋轉(zhuǎn)控件添加tooltip提示信息,設(shè)置tooltip的冒泡位置。

3. 代碼如下

html代碼:

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

<head>
 <meta charset="UTF-8">
 <title>對(duì)地圖的基本操作</title>
 <link rel="stylesheet" href="css/bootstrap.min.css" >
 <link rel="stylesheet" href="css/ol.css" >
 <link rel="stylesheet" href="css/ZoomSlider.css" >
 <script src="js/ol.js"></script>
 <script src="js/jquery-3.2.1.min.js"></script>
 <script src="js/bootstrap.min.js"></script>
 <script src="js/Operation.js"></script>
 <style>
 #map {
  width: 100%;
  height: 570px;
 }

 #menu {
  float: left;
  position: absolute;
  bottom: 10px;
  z-index: 2000;
 }

 .tooltip-inner {
  white-space: nowrap;
 }
 </style>
</head>

<body onload="init()">
 <div id="map">
 <div id="menu">
  <button id="zoom-out" class="btn btn-info">單擊縮小</button>
  <button id="zoom-in" class="btn btn-info">單擊放大</button>
  <button id="panto" class="btn btn-info">移動(dòng)地圖</button>
  <button id="restore" class="btn btn-info">復(fù)位地圖</button>
 </div>
 </div>
</body>

</html>

js代碼:

function init() {
 //實(shí)例化Map對(duì)象,用于加載地圖
 var map = new ol.Map({
 target: 'map', //地圖容器的div
 // 在地圖容器中加載圖層
 layers: [
  // 加載瓦片圖層數(shù)據(jù)OSM
  new ol.layer.Tile({
  source: new ol.source.OSM()
  })
 ],
 // 地圖視圖設(shè)置
 view: new ol.View({
  center: [12950000, 4860000], //地圖顯示中心設(shè)置
  zoom: 8, //地圖初始顯示級(jí)別
  minZoom: 6, //最小級(jí)別
  maxZoom: 12, //最大級(jí)別
  rotation: Math.PI / 6 //設(shè)置旋轉(zhuǎn)角度
 })
 });
 // 地圖視圖的初始參數(shù)
 var view = map.getView();
 var zoom = view.getZoom();
 var center = view.getCenter();
 var rotation = view.getRotation();
 // 實(shí)現(xiàn)單擊縮小按鈕的功能
 document.getElementById('zoom-out').onclick = function() {
  var view = map.getView(); //獲取當(dāng)前地圖視圖
  var zoom = view.getZoom(); //獲得當(dāng)前縮放級(jí)別
  view.setZoom(zoom - 1); //地圖縮小一級(jí)
 }
 // 實(shí)現(xiàn)單擊放大的功能按鈕
 document.getElementById('zoom-in').onclick = function() {
  var view = map.getView(); //獲取當(dāng)前地圖視圖
  var zoom = view.getZoom(); //獲得當(dāng)前縮放級(jí)別
  view.setZoom(zoom + 1); //地圖放大一級(jí)
 }
 // 平移功能
 document.getElementById('panto').onclick = function() {
  var view = map.getView(); //獲取當(dāng)前地圖視圖
  var lz = ol.proj.fromLonLat([103.73333, 36.03333]);
  view.setCenter(lz); //平移地圖
 }
 // 復(fù)位功能(復(fù)位到初始復(fù)位)
 document.getElementById('restore').onclick = function() {
  view.setCenter(center); //初始中心點(diǎn)
  view.setRotation(rotation); //初始旋轉(zhuǎn)角度
  view.setZoom(zoom); //平移地圖
 }
 // 為內(nèi)置的縮放控件與旋轉(zhuǎn)控件添加tooltip提示信息
 $('.ol-zoom-in,.ol-zoom-out').tooltip({
 placement: 'right' //tooltip在右側(cè)顯示
 });
 $('.ol-rotate-reset,.ol-attribution button[title]').tooltip({
 placement: 'left' //tooltip在右側(cè)顯示
 });
}

顯示效果如下:

4. 代碼解析

對(duì)地圖的縮放、平移、旋轉(zhuǎn)等基本操作都是通過(guò)地圖視圖 View 進(jìn)行控制,通過(guò)地圖視圖相應(yīng)的 set 方法實(shí)現(xiàn),首先需要通過(guò)Map的getView()獲取當(dāng)前地圖時(shí)視圖對(duì)象,然后根據(jù)視圖對(duì)象調(diào)用其 get 方法來(lái)獲取當(dāng)前的縮放級(jí)別(Zoom)、中心點(diǎn)(center)、旋轉(zhuǎn)角度(rotation)等參數(shù)。

(1)縮放地圖

通過(guò) View 的setZoom方法實(shí)現(xiàn)的,縮放級(jí)別由setZoom方法的參數(shù)進(jìn)行設(shè)置。首先通過(guò) view.getZoom() 獲取當(dāng)前地圖的級(jí)別,然后調(diào)用 setZoom 方法進(jìn)行縮放(view.setZoom(zoom - 1)),可將地圖縮小一級(jí),通過(guò) view.setZoom(zoom +1); 可將地圖放大一級(jí)。

(2)移動(dòng)地圖

移動(dòng)地圖就是通過(guò)改變地圖當(dāng)前地圖的中心,通過(guò)地圖視圖的 setCenter 方法實(shí)現(xiàn)。首先通過(guò)Map對(duì)象獲取地圖的視圖對(duì)象,然后調(diào)用 setCenter 方法進(jìn)行設(shè)置。函數(shù)傳的參數(shù)就是地圖中心的坐標(biāo)點(diǎn)。

(3)旋轉(zhuǎn)地圖

它是通過(guò)地圖默認(rèn)加載的旋轉(zhuǎn)控件(ol.control.Rotate)來(lái)實(shí)現(xiàn)的,Rotate 控件的 autoHide 參數(shù)默認(rèn)設(shè)置為 true,在旋轉(zhuǎn)角度為0時(shí)自動(dòng)隱藏旋轉(zhuǎn)功能。在這個(gè)例子中,我們?cè)O(shè)置了地圖的初始旋轉(zhuǎn)角為60°( rotation: Math.PI / 6 //設(shè)置旋轉(zhuǎn)角度),所以當(dāng)我們點(diǎn)擊旋轉(zhuǎn)按鈕時(shí),旋轉(zhuǎn)60°回到0°,按鈕影藏。

(4)復(fù)位地圖

它的功能就是將地圖恢復(fù)當(dāng)我們剛開(kāi)始加載地圖的狀態(tài),它涉及到 View 的設(shè)置,我們首先獲取到地圖加載時(shí)的縮放級(jí)別、中心點(diǎn)、旋轉(zhuǎn)角度,然后通過(guò) setZoom 、setCenter 、setRotation 方法進(jìn)行設(shè)置,實(shí)現(xiàn)地圖的復(fù)位功能。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能

    JS實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能

    本文主要介紹了JS實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能的步驟方法,可兼容所有PC瀏覽器,不兼容手機(jī)端。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • JS中showModalDialog關(guān)閉子窗口刷新主窗口用法詳解

    JS中showModalDialog關(guān)閉子窗口刷新主窗口用法詳解

    這篇文章主要介紹了JS中showModalDialog關(guān)閉子窗口刷新主窗口用法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了showModalDialog常見(jiàn)用法與相關(guān)使用技巧,需要的朋友可以參考下
    2017-03-03
  • 淺析TypeScript 命名空間

    淺析TypeScript 命名空間

    命名空間一個(gè)最明確的目的就是解決重名問(wèn)題。這篇文章主要介紹了TypeScript 命名空間的相關(guān)知識(shí),本文通過(guò)實(shí)例詳解給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-03-03
  • 原生JS上傳大文件顯示進(jìn)度條 php上傳文件代碼

    原生JS上傳大文件顯示進(jìn)度條 php上傳文件代碼

    這篇文章主要為大家詳細(xì)介紹了JS原生上傳大文件顯示進(jìn)度條,php上傳文件關(guān)鍵代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 詳解Next.js頁(yè)面渲染的優(yōu)化方案

    詳解Next.js頁(yè)面渲染的優(yōu)化方案

    這篇文章主要介紹了詳解Next.js頁(yè)面渲染的優(yōu)化方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • js拖拉表格實(shí)現(xiàn)內(nèi)容計(jì)算

    js拖拉表格實(shí)現(xiàn)內(nèi)容計(jì)算

    這篇文章主要為大家詳細(xì)介紹了js拖拉表格實(shí)現(xiàn)內(nèi)容計(jì)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • axios利用params/data發(fā)送參數(shù)給springboot?controlle的正確獲取方式

    axios利用params/data發(fā)送參數(shù)給springboot?controlle的正確獲取方式

    這篇文章主要給大家介紹了關(guān)于axios利用params/data發(fā)送參數(shù)給springboot?controlle的正確獲取方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • JS定義網(wǎng)頁(yè)表單提交(submit)的方法

    JS定義網(wǎng)頁(yè)表單提交(submit)的方法

    這篇文章主要介紹了JS定義網(wǎng)頁(yè)表單提交(submit)的方法,實(shí)例分析了javascript實(shí)現(xiàn)表單提交執(zhí)行自定義函數(shù)的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 用javascript將數(shù)據(jù)導(dǎo)入Excel示例代碼

    用javascript將數(shù)據(jù)導(dǎo)入Excel示例代碼

    將數(shù)據(jù)導(dǎo)入Excel的方法有很多,本例介紹的這個(gè)是使用js來(lái)實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入,感興趣的朋友可以了解下
    2014-09-09
  • Axios+Spring?Boot實(shí)現(xiàn)文件上傳和下載

    Axios+Spring?Boot實(shí)現(xiàn)文件上傳和下載

    這篇文章主要為大家詳細(xì)介紹了Axios+Spring?Boot實(shí)現(xiàn)文件上傳和下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評(píng)論