地圖可視化開發技術選型


1. 二維地圖開發

可供選擇的sdk有Openlayers,leafLet,高德sdk,百度sdk等。
本着開源,性能強大的特點,選擇Openlayers。
API地址:https://openlayers.org/en/latest/apidoc/

Vue項目中安裝使用
1) npm install ol
2) 代碼文件中按需引入相應包即可。
3) API參考文檔https://openlayers.org/en/latest/apidoc/module-ol_extent.html#.extend
4) Ol3架構圖如下:

pic_7b08ba70.png

摘自網絡

pic_9c62c96a.png

選擇面交互

pic_fbdcc025.png

選擇點交互

pic_0c0642c2.png

點信息展示

pic_e5c7cb50.png

點信息展示

pic_9e4e39c0.png

等溫圖

2. 三維地圖開發

本着開源,性能強大的特點,選擇Cesium。
API參考地址:https://cesium.com/docs/cesiumjs-ref-doc/

Vue項目中安裝使用
1) npm install cesium
2) npm install copy-webpack-plugin
3) vue.config.js配置

const CopyWebpackPlugin = require('copy-webpack-plugin');
let cesiumSource = './node_modules/cesium/Source';let cesiumWorkers = '../Build/Cesium/Workers';
const path = require('path');

module.exports = {
publicPath: '/aio/',
configureWebpack: {
resolve: {  alias: {    'cesium': path.resolve(__dirname, cesiumSource)  }},
plugins: [//拷貝文件  new CopyWebpackPlugin([{ from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' }]),  new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Assets'), to: 'Assets' }]),  new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' }]),  new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' }]),  new webpack.DefinePlugin({    CESIUM_BASE_URL: JSON.stringify('/aio/')  })
]
}
}
  1. main.ts引入
let widgets = require('cesium/Widgets/widgets.css');let Cesium = require('cesium/Cesium');Vue.prototype.widgets = widgets;Vue.prototype.Cesium = Cesium;
  1. vue文件調用
let Cesium = this.Cesium;let viewer = new Cesium.Viewer("cesiumContainer", {  geocoder: false, // 隱藏搜索  homeButton: false, // 隱藏主頁  sceneMode: Cesium.SceneMode.COLUMBUS_VIEW, // 設置場景模式為2D,默認為3D  sceneModePicker: false, // 隱藏二三維轉換  scene3DOnly: false,  navigationHelpButton: false, // 隱藏幫助按鈕  animation: false, // 隱藏時鍾  timeline: false, // 隱藏時間軸  fullscreenButton: false, // 隱藏全屏  vrButton: false, // 隱藏雙屏模式  infoBox: false, // 隱藏點擊 entity 信息框  selectionIndicator: false, // 隱藏點擊 entity 綠框  baseLayerPicker: false,  orderIndependentTranslucency: false,  contextOptions: {    webgl: {      alpha: true    }  }});

6) 架構圖

pic_1db5d09a.png

摘自網絡

pic_363744b2.png

示意圖

3. 基於Echarts地圖開發

Echarts內置幾種地圖數據展示模式,可以直接調用。

4. 基於Canvas地圖開發

個性化的地圖數據展示方式,可以采用此方式進行開發。使用canvas的繪圖功能,進行繪制。

pic_1b065424.png

動畫示例

pic_4093e1be.png

熱點事件

5. 基於SVG地圖開發

矢量圖形繪制軟件輸出的svg數據、或者坐標序列數據。使用svg的繪圖功能,進行繪制,事件添加。

pic_6ef16c74.png

地鐵線路圖

pic_0e69d65a.png

行政區划圖

6. 其他

a) 地圖底圖

基礎地圖使用天地圖,需要申請token,在線地址
https://console.tianditu.gov.cn/api/key
申請完后,填寫服務類型、域名白名單。

b)輔助網站

  1. 在線直觀繪制或可視化圖形,獲取GeoJSON數據。
    http://geojson.io/#map=2/20.0/0.0
  2. 在線轉換地圖文件,主要包括Shapefile、GeoJSON、TopoJSON、DBF、CSV。
    https://mapshaper.org/
  3. 在線獲取行政邊界數據
    http://datav.aliyun.com/tools/atlas/#&lat=40.401800094396876&lng=107.03080097842408&zoom=4.5

下載的數據為GCJ-02坐標系數據,需要轉換為WGS84坐標系后使用。解決方案有兩種:
一種是通過node cli,進行GeoJSON文件轉換。

參考:https://github.com/wandergis/coordtransform-cli?spm=a2c4g.11186623.2.6.2ce3d9ef3yN0Os

一種是通過數據庫腳本,進行GeoJSON文件轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM