1. 程式人生 > >利用Echarts製作地圖(一)

利用Echarts製作地圖(一)

Echarts作為一個前端視覺化工具,支援地圖圖表的展示。從本篇開始,將用三篇文章說明如何利用echats製作自定義區域的單圖例、多圖例及動態載入地圖所需資料。 Echarts支援 js 格式 與 geoJson格式的地圖。並且其官網提供了全國及省市自治區的地圖檔案可供下載 。本篇利用前面spring boot + jsp的專案進行演示。

0.專案最終目錄結構如下:


1. 引入jquery.js和echarts.js檔案到頁面

	<script type="text/javascript" src = "/jquery-1.9.1.min.js"></script>
	<script type="text/javascript" src = "/echarts.min.js"></script>
2.在頁面上建立一個地圖容器
	<div id="map-wrap" style="height: 500px;">

  	</div>
3.引入地圖檔案,echarts.js支援js格式和geojson格式的地圖檔案,但國際上geoJson格式更為標準,如果百度提供的js格式地圖足夠你使用,則可以使用這兩者其中的任何一個,如果百度提供的資料沒有你需要的,則只能想辦法自己製作資料。本篇文章後面所用資料以北京通州區下所屬各鎮為例,是作者自己製作。下文將介紹如何製作自定義區域的geojson資料。

3.1通過beijing.js方式載入資料,引入beijing.js檔案

<script type="text/javascript" src= "/beijing.js"></script>
程式碼及註釋如下:
<script type="text/javascript">
$(function(){
	
        //使用echarts.init()方法初始化一個Echarts例項,在init方法中傳入echarts map的容器 dom物件
	var mapChart = echarts.init(document.getElementById('map-wrap'));
	// mapChart的配置
	var option = {
	       title:{
		    text: '北京各區示意圖',
		    left:'center'
		},
		tooltip: {
	            trigger: 'item',
	            formatter: '{b}<br/>{c} (個)'
    		},
    		toolbox: {
	           show: true,
	           orient: 'vertical',
	           left: 'right',
	           top: 'center',
	           feature: {
	               dataView: {readOnly: false},
	               restore: {},
	               saveAsImage: {}
	           }
    		},
    		visualMap: {
		            min: 0,
		            max: 2000,
		            text:['高','低'],
		            realtime: false,
		            calculable: true,
		            inRange: {
		                color: ['lightskyblue','yellow', 'orangered']
		            }
   			},
    		series:[
    			{
    				name: '北京各區',
           	 		type: 'map',//type必須宣告為 map 說明該圖示為echarts 中map型別
           	 		map: '北京', //這裡需要特別注意。如果是中國地圖,map值為china,如果為各省市則為中文。這裡用北京
           	 		aspectScale: 0.75, //長寬比. default: 0.75
           	 		zoom: 1.2,
           	 		//roam: true,
	                itemStyle:{
	                    normal:{label:{show:true}},
	                    emphasis:{label:{show:true}}
	                },
        			data: [
        				{name:'東城區', value: 1800},
        				{name:'西城區', value: 1700},
        				{name:'朝陽區', value: 1600},
        				{name:'豐臺區', value: 1400},
        				{name:'石景山區', value: 1200},
        				{name:'海淀區', value: 1000},
        				{name:'門頭溝區', value: 800},
        				{name:'房山區', value: 600},
        				{name:'通州區', value: 400},
        				{name:'順義區', value: 200},
        				{name:'昌平區', value: 100},
        				{name:'大興區', value: 300},
        				{name:'懷柔區', value: 500},
        				{name:'平谷區', value: 700},
        				{name:'密雲縣', value: 900},
        				{name:'延慶縣', value: 1100}
        				
        			]
    			}
    		]
	};
        //設定圖表的配置項
        mapChart.setOption(option);
	
})
</script>
注意:在series中的map值為北京

啟動專案後,如下圖所示:


3.2 引用JSON格式地圖資料:

 這裡我們利用jQuery 的 $.get()方法非同步載入Beijing_TZQ_TOWN.json資料(該資料由自己製作)。前面已經引用了jquery.js檔案

程式碼及註釋如下:

<script type="text/javascript">
$(function(){

          var mapChart;
	  var option;
	
	  $.get('./Beijing_TZQ_TOWN.json', function (beijingJson) {
	  		echarts.registerMap('北京', beijingJson); 
	  		mapChart = echarts.init(document.getElementById('map-wrap')); 
	  		option = {
  				title:{
  					text: '北京市通州區各鎮分佈圖',
  					left: 'center'
  				},
  				tooltip: {
		            trigger: 'item',
		            formatter: '{b}<br/>{c} (個)'
        		},
        		toolbox: {
		           show: true,
		           orient: 'vertical',
		           left: 'right',
		           top: 'center',
		           feature: {
		               dataView: {readOnly: false},
		               restore: {},
		               saveAsImage: {}
		           }
        		},
        		visualMap: {
			            min: 0,
			            max: 2000,
			            text:['高','低'],
			            realtime: false,
			            calculable: true,
			            inRange: {
			                color: ['lightskyblue','yellow', 'orangered']
			            }
       			},
        		series:[
        			{
        			name: '通州區各鎮安裝機井統計圖',
               	 		type: 'map',
               	 		map: '北京', // 自定義擴充套件圖表型別
               	 		aspectScale: 1.0, //地圖長寬比. default: 0.75
               	 		zoom: 1.1, //控制地圖的zoom,動手自己更改下 看看什麼效果吧
               	 		roam: true,
		                itemStyle:{
		                    normal:{label:{show:true}},
		                    emphasis:{label:{show:true}}
		                }
        			}
        		]
  			}
 		 	mapChart.setOption(option);
	  		
	  });
	 
	
})
</script>
啟動專案:

完整程式碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
	<link rel="stylesheet" type="text/css" href="webjars/bootstrap/3.3.7/css/bootstrap.min.css" />
	<script type="text/javascript" src = "/jquery-1.9.1.min.js"></script>
	<script type="text/javascript" src = "/echarts.min.js"></script>
	<script type="text/javascript" src= "/beijing.js"></script>
</head>

<script type="text/javascript">
$(function(){
	  var mapChart;
	  var option;
	  $.get('./Beijing_TZQ_TOWN.json', function (beijingJson) {
	  		echarts.registerMap('北京', beijingJson); 
	  		mapChart = echarts.init(document.getElementById('map-wrap')); 
	  		option = {
  				title:{
  					text: '北京市通州區各鎮分佈圖',
  					left: 'center'
  				},
  				tooltip: {
		            trigger: 'item',
		            formatter: '{b}<br/>{c} (個)'
        		},
        		toolbox: {
		           show: true,
		           orient: 'vertical',
		           left: 'right',
		           top: 'center',
		           feature: {
		               dataView: {readOnly: false},
		               restore: {},
		               saveAsImage: {}
		           }
        		},
        		visualMap: {
			            min: 0,
			            max: 2000,
			            text:['高','低'],
			            realtime: false,
			            calculable: true,
			            inRange: {
			                color: ['lightskyblue','yellow', 'orangered']
			            }
       			},
        		series:[
        			{
        				name: '通州區各鎮安裝機井統計圖',
               	 		type: 'map',
               	 		map: '北京', // 自定義擴充套件圖表型別
               	 		aspectScale: 1.0, //長寬比. default: 0.75
               	 		zoom: 1.1,
               	 		roam: true,
		                itemStyle:{
		                    normal:{label:{show:true}},
		                    emphasis:{label:{show:true}}
		                }
        			}
        		]
  			}
 		 	mapChart.setOption(option);	
	  });
})
</script>

<body>
	<nav class="navbar navbar-inverse">
		<div class="container">
			<div class="navbar-header">
				<a class="navbar-brand" href="#">Spring Boot</a>
			</div>
			<div id="navbar" class="collapse navbar-collapse">
				<ul class="nav navbar-nav">
					<li class="active"><a href="#">Home</a></li>
					<li><a href="#about">About</a></li>
				</ul>
			</div>
		</div>
	</nav>
	<div class="container">
		<div class="starter-template">
			<h1 style="color: #4EE2EC">Spring Boot + JSP + Echarts 製作地圖示例</h1>
			<h2 style="color: #ED594E">Message: ${message}</h2>
		</div>
		<div id="map-wrap" style="height: 500px;">

  		</div>
  		<div>
			<h3>歡迎關注微信公眾號:ThinkingInGIS</h3>
			<img alt="微信公眾號" src="/qrcode_for_thinkingingis.png">
		</div>
	</div>
	<script type="text/javascript" src="webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>

看到這,很多人會問,該怎樣製作一個自定義區域的geojson地圖資料呢?

請看下回分解......

至此,利用spring boot + echarts 就實現了地圖的製作。

(如遇到問題,請留言給作者,以便共同探討gis知識。[email protected])

也可以通過如下公眾號留言


相關推薦

利用Echarts製作地圖

Echarts作為一個前端視覺化工具,支援地圖圖表的展示。從本篇開始,將用三篇文章說明如何利用echats製作自定義區域的單圖例、多圖例及動態載入地圖所需資料。 Echarts支援 js 格式 與 geoJson格式的地圖。並且其官網提供了全國及省市自治區的地圖檔案可供下載

ECharts的學習製作一個簡單的柱狀圖

<!DOCTYPE html> <html> <head> <meta charset="utf-8"><meta na

百度地圖API繪製計程車流向地圖:將起始GPS點對映到地圖

打算在年前實現用百度地圖API繪製NYC計程車流向地圖。目前實現了將出租車的起始點的GPS點對映到地圖上,繪製了GPS點的熱力圖。記錄在此。 所用資料:NYC綠色計程車資料 時間:2016.01.01 0:00-24:00 共24小時 GPS點個數:64398 繪圖方式:熱力圖 百度地圖

ArcGIS API For Javascript GP工具 Printing Tools匯出地圖或者列印地圖:GP 服務Printing Tools

ArcGIS API For Js  出圖 在Arcgisserver 10.X版本里面,安裝ArcServer之後自帶列印模板,不需要自己再單獨釋出;如果安裝之後沒用也是可以自己通過ArcToolBox裡面帶的工具自己再發布,本篇先說一下這個Printing Tools GP服務。為

1.3寸 SH1106 OLED+ESP8266 NodeMCU+DHT11氣象站製作過程

一、實現功能 本方案的開發環境為Ardunio IDE,可實現本地溫溼度資訊和網路溫度、時間及未來三天天氣資訊的顯示。不聯網的狀態下只顯示本地溫溼度資訊,只有一個介面。聯網狀態下,一共四個介面。第一個介面是顯示星期,日期,時間等資訊,第二介面顯示當前溫度資訊,第三個介面顯示天氣預報資訊,

MFC對話方塊裡利用CHtmlView載入介面————載入網頁

首先我們簡單瞭解下CHtmlView類,CHtmlView類是MFC類,它繼承自CView,屬於MFC檢視類。 但我們看它的具體實現時,我們會發現其最大的本質在於IWebBrowser2(WebBrowser ActiveX 控制元件)的封裝。即其實質是:利用IWebBro

Vue專案實戰引入百度地圖

一、在 http://lbsyun.baidu.com/ 申請 祕鑰 二、在index.html檔案中引入 <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=Fh9X4h

自定義ImageView實現地圖

  現在一提到地圖很多人就會想到百度地圖高德地圖等SDK,但是公司遇到個專案要做到室內導航,現在的第三方用GPS定位又不準,所以使用了一個自定義的ImageView去實現地圖的功能。該地圖有導航、定位、分級顯示、點選檢視位置詳細資訊的功能。今天我們先說下基礎地圖資料的顯示及

遊戲製作心得

談了很多關於網路遊戲的一些技術技巧和框架,但都是零散的,這有好處,但大多數新手或是愛好者都不知道該如何下手,下面談談我的遊戲開發心得 遊戲開發一般使用VC+DX,你可以使用Win32 API直接建立一個Windows應用程式框架,也可以使用MFC來建立一個Windows應用

c#面板製作教程

每每看著QQ,360等等那些軟體漂亮的外衣時,你是不是總是在想我的軟體什麼時候才能穿上這麼漂亮的外衣呢?不過現在當你看到這篇文章的時候不必再發出這樣的疑問了,因為接下來我會帶領大家一步一步”畫出”這些漂亮的外衣! 在寫這系列文章之前要感謝部落格園的蘇飛,我也是看來他的文章後才

ANDROID專案中嵌入高德地圖配置環境+顯示地圖

最近在做專案中嵌入高德地圖的工作,覺得有必要記錄一下嵌入過程,雖然高德官方給說明文件了,但有寫並不明確需要去查類,查資料,再此把過程記錄一下。 一、顯示地圖 1.配置AndroidManifest.xml檔案 可能需要如下許可權: <!--允許程式開啟網路套接字-

android自定義view之地圖

最近參加了一個比賽,要用到自己做一個自定義的小地圖,所以在網上查找了一些關於自定義view的有關資料,也瞭解了自定義控制元件的初步知識。 效果圖 第一階段我畫了一個自制的網格圖,點哪個網格就會哪個網格就會顯示。 工作環境圖 程式碼介紹

自定義View進階--手繪地圖

一:最近學習了自定義view,剛好就接到了相關的需求,於是就上手做了,下面描述一下需求       需求:簡單的來說就是做一個地圖,不同的是,為了追求美觀,於是地圖是一張由UI出的圖片,poi點       為運營採集點,實現地圖的縮放,移動,poi打點,以及其他的東西,由於

百度地圖AK申請與給應用簽名

1.申請金鑰 首先,使用百度地圖sdk需要一個AK,即金鑰,進入官網,點選下方申請金鑰 然後單擊建立應用,輸入相應資訊後提交即可獲得金鑰 注意,數字簽名和報名之間的分號為英文時候的分號。 數字簽名獲取方法:eclipse獲取數字簽名時只需要在window->P

醬油帶你用cocos2dx3.0完成款戰棋遊戲 曹操傳地圖製作篇 1

這是醬油第一次寫部落格,所以如果有什麼寫的不好,大家多多海涵啊。那麼廢話就不多說了,直接進入正題吧。 製作一款戰棋遊戲,在醬油看來最大的難度便是 ai的設計以及 實現劇本對遊戲整體的控制,當然啦,這都是比較深的問題了,醬油會放到以後的章節來加以介紹。那麼現在就正式開始打醬油

echarts 地圖實現輪播

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts</title> <!-- 引入

【cocos3.x+tilemap】製作rpg小遊戲地圖製作

       前面做過一個小的馬里奧遊戲,現在來實現一個小時候玩過的類似文曲星上《英雄壇說》的小RPG遊戲。        與橫板的馬里奧遊戲不同,這個遊戲需要實現的東西更多——包括45度斜角地圖、2.5D物體遮擋、尋路演算法、npc互動等,不過不需要再引入B

ArcGIS API for JavaScript3.x 學習筆記[3] 加載底圖【天地圖經緯度版

矢量地圖 說明 tiled spa 過程 相同 服務器列表 text 服務 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5

USGS-EROS項目espa-surface-reflectance中的LaSRC Version 1.3.0模塊利用vs2010編譯出windows64位版本

product 發現 jpeg git clone args dcl 函數 中一 比較 Landsat8衛星的大氣校正目前國內有很多學者都在做,隨便百度一下就能找到很多論文,提出的算法都有各自的亮點,學術研究上都有意義。 但是,問題來了,如果要真正拿出來處理任意一幅La

Openlayers系列關於地圖投影的理解

數據庫 nbsp 簡單的 是個 ace 投影 存儲 mongodb uid 近期開發以MongoDB為基礎的分布式地理數據管理平臺系統,被要求做一個簡單的demo給客戶進行演示。於是筆者便打算向數據庫中存儲一部分瓦片數據,寫一個簡單的存取服務器,使用Openlayers客戶