国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Crazy_Coder / 3735人閱讀

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

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

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

1.前期準(zhǔn)備

需要的東西

百度地圖API文件(替代)

getModules.js

地圖瓦片

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

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


復(fù)制劃線部分并打開,拿到主文件,為方便后續(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=,替換。那個 console.log(a),是為了給后面創(chuàng)建getModules.js用

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

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

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

  
  
      
          
          
        Hello, World  
          
        
      

      
        
4.獲取地圖瓦片

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

下面分步講解:

4.1 獲取地圖圖片請求地址

查看請求圖片的地址,

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

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

先對地圖進(jìn)行拖拽(加載圖片),確保想要的省市(比如我要江浙滬)都出現(xiàn)在可是范圍內(nèi),每縮放到一個等級,都要把江浙滬拖到可視區(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))
      }
    }
  }
}

長這樣

4.3 修改獲取圖片地址

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

開始的時候我把這api,getModues的文件都放在調(diào)用頁面那邊,圖片加載報錯,后來移到項(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è)置縮放范圍(地圖層級),這次只需要到10級就好,最小能看中國地圖5級就好。
bmap.setMaxZoom(10);
bmap.setMinZoom(5);
// 限制拖拽范圍,就是限制拖拽的邊界,圖片沒那么多,一直拖,等圖片用完,就出現(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108207.html

相關(guān)文章

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

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

    G9YH 評論0 收藏0
  • echarts 與 highcharts

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

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

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

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

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

    gotham 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<