1. 程式人生 > >01 建立一個二維地圖

01 建立一個二維地圖

      隨著3.X系列版本新功能的不再增加,終於開始向4.X版本轉變,其實說實話還是蠻不想轉變的,因為相對於3.X版本的API,4.X版本里面的功能目前為止還是有點少的,但大勢所趨,只能硬著頭皮轉了。

      首先,4.X版本開發的基本套路和3.X版本相比是一致的,無非就是建立HTML頁面,引用相關模板,然後例項化,最後實現與地圖的互動,即操作地圖。不過4.X版本的優點就是主打三維這一塊,而且目前較新的前端渲染技術等已經融入到了新版本,老版本的話目前官方已經不再增加新功能,只是修復一下bug等,所以學習4.X系列的API開發是大勢所趨。

      第一個例項,我們來運用4.X版本的API來建立一個二維地圖,最終效果如下:

      由上圖可見,它和老版本建立的地圖一模一樣,並沒有什麼不同,但是它其實是有區別的,它的區別就在於建立的過程和老版本並不是一致的,具體過程如下:

1 第一步基本都相同,就是建立HTML頁面,然後建立一個div,設定其相應的樣式,如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">

<title>Intro to MapView - Create a 2D map</title>

<style>

html, body, #viewDiv {

padding: 0;

margin: 0;

height: 100%;

width: 100%;

}

</style>

</head>

<body>

<div id="viewDiv"></div>

</body>

</html>

      在這裡你可能會自然而然的覺得,這個div是放置地圖的,但你錯了,它並不是放置地圖,而另有他用。

2 我們引入相應的開發包,在此示例中只需要一個init.js和一個css樣式檔案即可,如下:

<link rel="stylesheet" href="https://js.arcgis.com/4.9/esri/css/main.css">

<script src="https://js.arcgis.com/4.9/"></script>

3 引入相應的開發包之後,我們接下來就要載入所需的模組,然後例項化地圖,到目前為止,這些步驟都和老版本中的操作一模一樣,大家不難理解,如下:

<script>

require([

"esri/Map",

"esri/views/MapView"

], function(Map, MapView){

var map = new Map({

basemap: "osm"

});


});

</script>

4 細心的同學已經發現了,我建立地圖並沒有用到之前建立好的div,在這只是指定了一個底圖而已,而且除了載入Map這個模版之外,我還載入了一個叫做MapView的模版。

      在這就要介紹一下這個MapView了,它是我們今天的主角,也是我們以後的主角。在4.X版本中其實是這樣的,你建立一個地圖,除此之外你還要建立一個地圖視角,我們在這把這個地圖視角可以理解為檢視地圖的眼睛,只有建立了地圖視角,將它和地圖做繫結,我們才能檢視地圖,否則是看不到地圖的。

      所以,接下來我們就要建立地圖視角,在此時就要使用我們的div了,如下:

var view = new MapView({

container: "viewDiv", // 檢視地圖的容器

map: map, // 繫結建立的地圖

zoom: 9,

center: [104.071469,30.662036] // 視角中心、觀察中心

});

5 地圖建立完成,地圖視角建立完成,將他倆做完繫結之後我們就可以在前端看到建立的地圖了。以下是完整的程式碼:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">

<title>Intro to MapView - Create a 2D map</title>

<style>

html, body, #viewDiv {

padding: 0;

margin: 0;

height: 100%;

width: 100%;

}

</style>

<link rel="stylesheet" href="https://js.arcgis.com/4.9/esri/css/main.css">

<script src="https://js.arcgis.com/4.9/"></script>

<script>

require([

"esri/Map",

"esri/views/MapView"

], function(Map, MapView){

var map = new Map({

basemap: "osm"

});

var view = new MapView({

container: "viewDiv", // 產看地圖的容器

map: map, // 繫結建立的地圖

zoom: 9,

center: [104.071469,30.662036] // 視角中心、觀察中心

});

});

</script>

</head>

<body>

<div id="viewDiv"></div>

</body>

</html>