亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

百度地圖2.0離線版與echarts結(jié)合

Crazy_Coder / 3837人閱讀

摘要:根據(jù)需要對(duì)頁(yè)面的地圖進(jìn)行拖拽和縮放,在調(diào)用頁(yè)面,拿到。最終的目錄結(jié)構(gòu)與結(jié)合引入兩種方法,一種是引入安裝包里的文件本文采用這用,另一種是從中直接拿設(shè)置中心點(diǎn)設(shè)置縮放范圍地圖層級(jí),這次只需要到級(jí)就好,最小能看中國(guó)地圖級(jí)就好。

由于客戶(hù)需求,之前使用的json形式的可鉆取型地圖被放棄了,要好看,沒(méi)有網(wǎng)~,于是開(kāi)啟了打地鼠(bug)模式,總結(jié)如下:

網(wǎng)上搜索,百度離線地圖資料很有限啊,可以用的幾個(gè)要么年代久遠(yuǎn),要么不能滿(mǎn)足需求。不過(guò)還是從前輩們那里理清了思路

1.前期準(zhǔn)備

需要的東西

百度地圖API文件(替代)

getModules.js

地圖瓦片

2.百度地圖API文件 2.1 下載API主文件

下載最新的api文件,不需要申請(qǐng)ak,地址:http://api.map.baidu.com/api?v=2.0, 打開(kāi)可以看到:


復(fù)制劃線部分并打開(kāi),拿到主文件,為方便后續(xù)查看修改,先格式化一下,工具:http://www.bejson.com/,命名為apiv2.0.min.js

2.2 改造apiv2.0.min.js

去掉ak驗(yàn)證
搜索charset = "utf-8",添加 if (/^http/.test(a)) return;

function oa(a, b) {
      if (/^http/.test(a)) return;  // 如果是調(diào)用外部資源就退出去
      if (b) {
          var c = (1E5 * Math.random()).toFixed(0);
          z._rd["_cbk" + c] = function(a) {
              b && b(a);
              delete z._rd["_cbk" + c]
          };
          a += "&callback=BMap._rd._cbk" + c
      }
      var d = K("script", {
          type: "text/javascript"
      });
      d.charset = "utf-8";
      d.src = a;
      d.addEventListener ? d.addEventListener("load",
      function(a) {
          a = a.target;
          a.parentNode.removeChild(a)
      },
      q) : d.attachEvent && d.attachEvent("onreadystatechange",
      function() {
          var a = window.event.srcElement;
          a && ("loaded" == a.readyState || "complete" == a.readyState) && a.parentNode.removeChild(a)
      });
      setTimeout(function() {
          document.getElementsByTagName("head")[0].appendChild(d);
          d = p
      },
      1)
  };

引用本地工具資源
搜索 domain.main_domain_cdn.baidu[0],找到使用它定義的z.ma,修改為z.ma = "";

加載模塊短路處理
搜索 &mod=,替換。那個(gè) console.log(a),是為了給后面創(chuàng)建getModules.js用

3. 創(chuàng)建本地工具資源文件getModules.js

在這里面放API需要調(diào)用的模塊,上面打印的數(shù)組a里面是需要請(qǐng)求的模塊,打印出來(lái),通過(guò)下面方式獲取,放到getmodules2.0.js,例如 canvablepath_lf2t4w, 通過(guò)
http://api0.map.bdimg.com/getmodules?v=2.0&t=20140707&mod=canvablepath_lf2t4w
下載。

這個(gè)時(shí)候已經(jīng)可以用了:

  
  
      
          
          
        Hello, World  
          
        
      

      
        
4.獲取地圖瓦片

很多人推薦了諸如太樂(lè)地圖下載器、全能地圖下載器、水經(jīng)注地圖下載等等,無(wú)奈都要花錢(qián)購(gòu)買(mǎi),再加上用的mac,各種不方便。最后用node自己寫(xiě)的。新建文件夾tiles,放圖片,最終目標(biāo)形成按級(jí)分類(lèi)(百度地圖瓦片層級(jí)分為16級(jí),可根據(jù)需要選擇)的文件夾:

下面分步講解:

4.1 獲取地圖圖片請(qǐng)求地址

查看請(qǐng)求圖片的地址,

在apiv2.0.min.js中找到相關(guān)代碼,搜索 getTilesUrl,有好幾個(gè),對(duì)照URL地址的構(gòu)成,可以找到

方框內(nèi)是獲取圖片地址,url是原始地址,nname是即將存入的本地地址。根據(jù)需要對(duì)頁(yè)面的地圖進(jìn)行拖拽和縮放,在調(diào)用頁(yè)面,拿到xxxUrls。

先對(duì)地圖進(jìn)行拖拽(加載圖片),確保想要的省市(比如我要江浙滬)都出現(xiàn)在可是范圍內(nèi),每縮放到一個(gè)等級(jí),都要把江浙滬拖到可視區(qū)域溜一圈。

4.2 下載圖片

nodejs的主要代碼貼上:

const imgArr = xxxUrls;

const newArr = new Set(imgArr); //去重
const finalArr = Array.from(newArr); 
//創(chuàng)建目錄
const fs = require("fs");
const axios = require("axios");

const request = require("request");
const path = require("path")

const hostdir = "./";
function mkdirSync(dirname) {
    if (fs.existsSync(dirname)) {
        return true;
    } else {
        if (mkdirSync(path.dirname(dirname))) {   
            fs.mkdirSync(dirname);
            return true;
        }
    }
    return false
}
const n = 0;
for (const item of finalArr) {
  const last = item.name.lastIndexOf("/")
  if (last > 0) {
    const name = item.name.substr(last + 1)
    const dir = item.name.substr(0, last)
    const dstpath = hostdir + dir + "/" + name
    if (name.length && dir.length && !fs.existsSync(dstpath)) {
      if (mkdirSync(hostdir + dir)) {
        ++n;
        request(item.url).pipe(fs.createWriteStream(dstpath))
      }
    }
  }
}

長(zhǎng)這樣

4.3 修改獲取圖片地址

在apiv2.0.min.js中找到相關(guān)代碼,搜索 getTilesUrl,同上, 找到后修改。

開(kāi)始的時(shí)候我把這api,getModues的文件都放在調(diào)用頁(yè)面那邊,圖片加載報(bào)錯(cuò),后來(lái)移到項(xiàng)目最外層的static中才解決。最終的目錄結(jié)構(gòu):

5.與echarts結(jié)合

引入BMap,兩種方法,一種是引入echarts安裝包里的bmap.js文件(本文采用這用),另一種是從windows中直接拿

const newMap = echarts.init(document.getElementById("newMap"));
newMap.setOption(this.newOption);

// bmap
const bmap = newMap.getModel().getComponent("bmap").getBMap();
const point = new BMap.Point(118.78, 31.04); // 設(shè)置中心點(diǎn)
// 設(shè)置縮放范圍(地圖層級(jí)),這次只需要到10級(jí)就好,最小能看中國(guó)地圖5級(jí)就好。
bmap.setMaxZoom(10);
bmap.setMinZoom(5);
// 限制拖拽范圍,就是限制拖拽的邊界,圖片沒(méi)那么多,一直拖,等圖片用完,就出現(xiàn)空白。
const b = new BMap.Bounds(new BMap.Point(111.64, 26.40), new BMap.Point(125.95, 35.28)); // 左下角,右上角
try {
  BMapLib.AreaRestriction.setBounds(bmap, b);
} catch (e) {
  alert(e);
};

bmap.centerAndZoom(point, 7);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/108207.html

相關(guān)文章

  • 百度地圖 osm地圖 leaflet echarts webapck的組合使用時(shí)的踩坑記錄

    摘要:百度地圖創(chuàng)建標(biāo)簽進(jìn)行加載使用百度地圖需要百度地圖添加擴(kuò)展,用于讓百度地圖支持地圖可能會(huì)遇見(jiàn)兩個(gè)問(wèn)題地圖圖片錯(cuò)位忘記加載中使用的一個(gè)主要問(wèn)題是默認(rèn)圖標(biāo)的加載問(wèn)題,詳見(jiàn)另外也可以考慮使用動(dòng)態(tài)創(chuàng)建標(biāo)簽的方法,類(lèi)似百度地圖加載百度地圖因?yàn)楸旧碇С值? webpack+百度地圖 創(chuàng)建 script標(biāo)簽進(jìn)行加載 export function MP(ak){ return new Prom...

    G9YH 評(píng)論0 收藏0
  • echarts 與 highcharts

    摘要:渲染能力采用渲染除了對(duì)使用,一般來(lái)說(shuō),更適合繪制圖形元素?cái)?shù)量非常大這一般是由數(shù)據(jù)量大導(dǎo)致的圖表如熱力圖地理坐標(biāo)系或平行坐標(biāo)系上的大規(guī)模線圖或散點(diǎn)圖等,也利于實(shí)現(xiàn)某些視覺(jué)特效如交通圖。 一.簡(jiǎn)介 echartsecharts是百度公司前端開(kāi)發(fā)的一個(gè)圖表庫(kù),2013年發(fā)布第一版,主要采用canvas畫(huà)圖,目前版本3.8.4;完全免費(fèi); highcharthighcharts是國(guó)外的一家公司...

    王笑朝 評(píng)論0 收藏0
  • 對(duì)web數(shù)據(jù)可視化的一些理解

    摘要:本人也做過(guò)一些數(shù)據(jù)可視化相關(guān)的產(chǎn)品,下面聊聊對(duì)數(shù)據(jù)可視化的一些思考。這也是數(shù)據(jù)可視化最麻煩的一直,一般我們借助的地圖,或者百度地圖,高德地圖等來(lái)開(kāi)發(fā),其實(shí)百度地圖也出了個(gè)地圖可視化的庫(kù),展示效果沒(méi)有好。。。。 最近幾年隨著大數(shù)據(jù)的興起,以及瀏覽器性能的提升,數(shù)據(jù)可視化成為了一個(gè)熱點(diǎn),前端也冒出來(lái)了很多數(shù)據(jù)可視化的崗位。本人也做過(guò)一些數(shù)據(jù)可視化相關(guān)的產(chǎn)品,下面聊聊對(duì)數(shù)據(jù)可視化的一些思考。...

    andong777 評(píng)論0 收藏0
  • 對(duì)web數(shù)據(jù)可視化的一些理解

    摘要:本人也做過(guò)一些數(shù)據(jù)可視化相關(guān)的產(chǎn)品,下面聊聊對(duì)數(shù)據(jù)可視化的一些思考。這也是數(shù)據(jù)可視化最麻煩的一直,一般我們借助的地圖,或者百度地圖,高德地圖等來(lái)開(kāi)發(fā),其實(shí)百度地圖也出了個(gè)地圖可視化的庫(kù),展示效果沒(méi)有好。。。。 最近幾年隨著大數(shù)據(jù)的興起,以及瀏覽器性能的提升,數(shù)據(jù)可視化成為了一個(gè)熱點(diǎn),前端也冒出來(lái)了很多數(shù)據(jù)可視化的崗位。本人也做過(guò)一些數(shù)據(jù)可視化相關(guān)的產(chǎn)品,下面聊聊對(duì)數(shù)據(jù)可視化的一些思考。...

    gotham 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<