1. 程式人生 > >關於echart-gl載入世界地圖的問題

關於echart-gl載入世界地圖的問題

1、需求分析:

設計需求一個旋轉的地球儀作為背景

2、實現過程:

option = {
    backgroundColor: '#000',
    globe: {
        baseTexture: 'data-gl/asset/earth.jpg',
        heightTexture: 'data-gl/asset/bathymetry_bw_composite_4k.jpg',
        displacementScale: 0.1,
        shading: 'lambert',
        environment: 'data-gl/asset/starfield.jpg',
        light: {
            ambient: {
                intensity: 0.1
            },
            main: {
                intensity: 1.5
            }
        },
        layers: [{
            type: 'blend',
            blendTo: 'emission',
            texture: 'data-gl/asset/night.jpg'
        }, {
            type: 'overlay',
            texture: 'data-gl/asset/clouds.png',
            shading: 'lambert',
            distance: 5
        }]
    },
    series: []
}

option.globe.baseTexture是地球的紋理,可以通過兩種方式:

a、支援圖片路徑字串,圖片或者 Canvas 的物件;

baseTexture: 'asset/earth.jpg'
let getOption = function (svg) {
  let option = {
    backgroundColor: 'rgba(0,0,0,0)',
    globe: {
      show: !!svg,
      baseTexture: svg,
      displacementScale: 0.4,
      shading: 'color',//地球中三維圖形的著色效果,通過經典的 lambert 著色表現光照帶來的明暗
      viewControl: {
        rotateSensitivity:0
      },
      light: {
        ambient: {
          intensity: 0.5//全域性的環境光設定。環境光的強度。
        },
        main: {//場景主光源的設定,在 globe 元件中就是太陽光
          intensity: 1//主光源的強度。
        }
      },
      postEffect:{
        enable:true,
        bloom:100,
      }
    },
    series: []
  };
  return option;
};

//可能會出現圖片還未載入完全,出現白球旋轉
let image = new Image();
image.onload = () => {
     this.options = getOption(image);
};
image.src = world;

b、直接使用 echarts 的例項作為紋理,此時在地球上的滑鼠動作會跟紋理上使用的 echarts 例項有聯動;

var canvas = document.createElement('canvas');
var mapChart = echarts.init(canvas, null, {
    width: 4096, height: 2048
});
mapChart.setOption({
    series : [
        {
            type: 'map',
            map: 'world',
            // 繪製完整尺寸的 echarts 例項
            top: 0, left: 0,
            right: 0, bottom: 0,
            boundingCoords: [[-180, 90], [180, -90]]
        }
    ]
});
...
baseTexture: mapChart

3、世界地圖的資源集合

echarts可使用的world.json檔案集合:可以發郵件找我 [email protected]

4、問題集合

a、在載入地圖資料的時候出現大白球

分析:當專案打包後,請求的資料還沒有返回時,echarts-gl就開始渲染了,所以會出現白球情況;

解決方式:增加判斷,在載入完地球紋理圖片之後再將option.globe.show=true

b、使用world.json進行渲染時,會出現球體旋轉卡頓掉幀的情況

分析:因為球體旋轉的視覺效果是通過重複執行setOption來實現的,每次都使用echarts畫一次world.json世界地圖的canvas,再將該canvas渲染至echarts-gl球體,會非常消耗效能;

解決方式:在echarts重複渲染球體之前將地圖先畫出,並作為引數傳進來【避免紋理圖片重複渲染】;需求只是需要背景圖,不需要精確的地理位置,使用圖片代替world.json渲染出的canvas圖形;圖片可以使用highmaps裡面的資料;

相關推薦

關於echart-gl載入世界地圖的問題

1、需求分析: 設計需求一個旋轉的地球儀作為背景 2、實現過程: option = {     backgroundColor: '#000',     globe: {         baseTexture: 'data-gl/asset/earth.jpg',

Echart描繪一個世界地圖

一個Echart官網示例中世界地圖的例子: 1.首先要去官網http://echarts.baidu.com 點選開啟連結下載Echarts.js2.具體程式碼 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transiti

數據輸入——生成你需要的echart圖(世界地圖,氣泡圖)

世界 examples www cti scatter 輸入 symbol ada rgb 上一篇文章介紹了:堆積柱狀圖、扇形圖、嵌套環形圖,現在來介紹一下:世界地圖和氣泡圖 1.世界地圖 http://echarts.baidu.com/examples/editor.h

Openlayers離線載入地圖

com def servlet 名稱 efault sqlite stub 好的 resultset 概述:經過一個春節的休整,今天最終開始了!任何時候。都不要忘記學習。學習是一輩子的事情!今天,我來說說怎樣實現天地圖的離線以及Openlayers載入離線數據實現天地圖

基於VUE+TS中引用ECharts的中國地圖世界地圖密度表

per java out borde UNC reac nta 黑龍江 unit 首先先附上官網 http://echarts.baidu.com/option.html#series-line.label 以及密度表對應geo配置文檔 http://echarts.bai

OpenLayers載入地圖

openlayer 是基於JavaScript的webGIS庫 ,通過openlayer可以很容易的呼叫地圖,並做相應的操作。 在head中載入openlayer的js檔案: <link rel="stylesheet" href="https://openlayers.org/e

使用pygal繪製世界地圖時的兩個報錯

我在使用pygal呼叫國別碼、繪製世界地圖的時候,遇到了兩個問題,一是使用下方語句呼叫國別碼的時候 from pygal.i18n import COUNTRIES 出現瞭如下報錯: ModuleNotFoundError: No module named 'pygal.i18n

地圖專題一:載入地圖

最近公司的專案到了尾聲。總結一下專案中的一些技術。其中有涉及到天地圖的部分。 類似百度地圖,google地圖。 我們要用一些它的公共介面,實現一些我們的效果。  比如在地圖上顯示我們的裝置的位置,範圍,執行軌跡等等。 大多數的功能其實都只是參考天地圖官方api。http://api.t

Arcgis for android100.3 載入影像地圖並且快取地圖

這裡載入並且快取影像的目的是為了防止遙感影像的拷貝,專案之前都是在拷貝影像(因為資料較大,下載太費事),在此進行更新,改為先是載入線上影像,然後再進行快取。 一、先重寫了Arcgis for android的一個ImageTiledLayer(因為別的大多數方法是不允許被重寫的----),先看一

Global Mapper如何載入線上地圖

Global Mapper是一個比較好用的GIS資料處理軟體,官網:http://www.bluemarblegeo.com/products/global-mapper.php ,除使用ArcGIS軟體的處理資料外,這個軟體也常用來處理資料,它不會像ArcGIS等大型商業GIS軟體那樣臃腫。 但是,以前它

前端 繪製世界地圖

            <div class="col-xxl-6 col-lg-6  col-md-6" style="margin-bottom: -6px">       &n

使用Echart搭配百度地圖建立某一地區熱點圖的注意點

使用Echart搭配百度地圖建立的熱點圖,為網友免費做的demo,細節沒有調整.記錄一下寫的過程. 效果圖: 程式碼: <!DOCTYPE html> <html style="height: 100%"> <head>

echarts繪製世界地圖部分機場顯示

<!DOCTYPE html> <html style="height: 100%";>    <head>        <meta charset="utf-8">   &n

Openlayers官方示例詳解十二之通過XYZ方式載入瓦片地圖

目錄 一、示例簡介 二、程式碼詳解 三、補充 一、示例簡介     這個示例展示了通過XYZ格式的URL訪問瓦片地圖資料,有關XYZ方式載入瓦片地圖可以參考這篇文章:萬能瓦片載入祕籍。     本示例載入的瓦片地圖是Thunderf

(四) arcgis runtime for android 100.3開發學習(載入切片地圖服務)

今天我們來學習關於arcgis for android載入切片地圖服務相關知識。使用的是新版本的arcgis runtime for android100.3,我們來看下載入切片地圖服務的類ArcGISTiledLayer,該類繼承了ImageTiledLayer類,其中Ar

4.02WorldWindAndroid載入地圖線上非正切片地圖

WorldWindAndroid對於TileImage的載入預設是按照等經緯差的正切片載入的,經圈範圍-180--180,緯圈範圍-90--90,所以,經緯方向上的切片規格為2X1! 為了能夠載入經緯差之比為2:1的切片服務,需要將載入正切片的方式進行一定的處理,才能正確載入本服務! 1、第一級

osmdroid 載入地圖線上向量和影像資料

osmdroid 載入天地圖線上向量和影像資料 轉載 載入天地圖線上向量和影像資料 Osmdroid下載地址 Osmdroid github 效果圖 程式碼展示 影像地圖 import android.os.Bundle; impor

[python] 幾行代碼也能玩轉世界地圖

2.6 圖表 ont 點擊 了解 tst 形式 tex pre 前些天收到某位大佬的求助,說是需要給根據數據給安徽省地市來繪制個圖,用不同顏色來直觀表示數據。當時就想到了Python提供一個繪制地圖的庫—— Pyecharts。 Pyecharts是一個用於生成echart

如何使用微圖載入離線地圖

      最近使用微圖新增離線地圖的時候經常會出現開啟地圖 “沒有地圖”的情況,這裡集中講解一下如何新增離線地圖到微圖內。 工具/原料 方法/步驟       1.首先找到萬能地圖下載器下

使用openlayers 3 線上載入地圖及GeoServer釋出的地圖

        之前試了openlayers2載入天地圖,不過公司已經棄用2,所以使用openlayers3來載入天地圖衛星圖和標註圖層,今天又學習了GeoServer釋出地圖,一併用openlayers測試加載出來,順便實現了7種地圖控制元件。下面直接貼程式碼:<!