整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          百度地圖API圖標、文本、圖例與連線

          百度地圖API圖標、文本、圖例與連線

          度地圖開放平臺功能強大,使用簡單,為地圖的自定義提供了非常方便的途徑!

          本文以繪制一張全國機器輻射圖為例記錄其基本使用方法,效果如下圖:



          圖中包括了帶圖標和文本的標注,連線以及圖例。

          1.關于坐標

          說到地圖,不得不說坐標。

          我以為,GPS獲取經緯度之后,把經緯度丟給地圖就可以了。但那真的是自以為

          1.1 坐標系

          來看看實際情況,以下是百度開發文檔里的描述:

          目前國內主要有以下三種坐標系:

          WGS84:為一種大地坐標系,也是目前廣泛使用的GPS全球衛星定位系統使用的坐標系。

          GCJ02:又稱火星坐標系,是由中國國家測繪局制訂的地理信息系統的坐標系統。由WGS84坐標系經加密后的坐標系。

          BD09:為百度坐標系,在GCJ02坐標系基礎上再次加密。其中bd09ll表示百度經緯度坐標,bd09mc表示百度墨卡托米制坐標。

          非中國地區地圖,服務坐標統一使用WGS84坐標。

          百度對外接口的坐標系為BD09坐標系,并不是GPS采集的真實經緯度,在使用百度地圖JavaScript API服務前,需先將非百度坐標通過坐標轉換接口轉換成百度坐標。

          通過 GPS 獲取的為 WGS84,在百度地圖上使用前要轉換為 BD09,百度提供了相應的 api 進行坐標轉換,文檔地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition

          http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=s1eeiQEfDF0WZfdfvLgHbG2Ru49UNCrn
          返回結果:
          {
           status : 0,
           result :
           [
           {
           x : 114.23074871003,
           y : 29.579084787993
           } 
           ]
          }
          

          具體還可參考下這篇文章:https://www.cnblogs.com/yesicoo/p/4668642.html

          1.2 坐標拾取器

          如果坐標是靜態的,或測試用,可以直接通過百度地圖提供的“坐標拾取器”工具來獲取經緯度。

          工具地址:http://api.map.baidu.com/lbsapi/getpoint/index.html

          點哪就獲取哪的坐標,此坐標不用再轉換,復制過來即可以使用。

          2. 開始應用

          2.1 準備圖標

          有好些站點可以下載圖標,如:https://easyicon.net,可以獲取一些圖標文件。至于商用的要求則要看看站點說明。

          如下圖,這里準備總部與機器的圖標下載保存為 head.png、machine.png。


          2.2 開啟百度地圖

          地圖API的使用需要先申請一個 ak,為了體驗方便,這里已經申請了一個可以直接使用的 key,在頁面中可直接加入以下引用。

          <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=s1eeiQEfDF0WZfdfvLgHbG2Ru49UNCrn"></script>
          

          使用以下語句,定義全局的地圖對象

           // 百度地圖 API 功能對象
           var map=null;
           if (BMap) {
           map=new BMap.Map("allmap"); // id=allmap 的容器內顯示
           map.enableScrollWheelZoom();
           }
          

          2.2 標注:圖標與文本

          標注使用 BMap.Marker,可以為其指定 Icon與Label。為了方便后續使用,本例定義以下函數,指定位置、圖標(本例中可用已經下載的圖標 head,machine)以及文本即可。

           /**
           * 指定經緯度,圖標,標注文本
           * 在地圖上添加標注
           * longitude 經度
           * latitude 緯度
           * icon 圖標
           * text 標注文本
           **/
           function addMarker(longitude, latitude, icon, text) {
           if (!map) return;
           var point=new BMap.Point(longitude, latitude); 
           var myIcon=new BMap.Icon(icon + ".png", new BMap.Size(32, 32));
           // 指定位置及標注的圖標
           var marker=new BMap.Marker(point, { icon: myIcon }); // 創建標注
           if(text){
           var label=new BMap.Label(text, { offset: new BMap.Size(32, -16) });
           marker.setLabel(label);
           }
           // 添加到地圖上
           map.addOverlay(marker); 
           }
          

          2.3 連線

          連線實際使用的是繪制多邊形的功能,只是當只指定了兩個點時,就是一根線。同樣,這里定義一個函數以方便直接調用。

           /**
           * 指定起止經緯度,繪制連接線
           * 
           * longitudeFrom 經度
           * latitudeFrom 緯度
           * longitudeTo 經度
           * latitudeTo 緯度
           **/
           function addLine(longitudeFrom, latitudeFrom, longitudeTo, latitudeTo) {
           if (!map) return;
           var pointFrom=new BMap.Point(longitudeFrom, latitudeFrom); 
           var pointTo=new BMap.Point(longitudeTo, latitudeTo); 
           // 可以指定多點連接,此處只考慮兩點
           var line=new BMap.Polyline([pointFrom, pointTo], { strokeWeight:1, strokeOpacity:0.5, strokeColor:"red" });
           // 添加到地圖上
           map.addOverlay(line); 
           }
          

          2.4 圖例

          圖例需要以地圖定義的控件方式來添加,在控件的 initialize 事件中完成 DOM 元素的生成即可,為了體現過程本身,以下函數把 DOM 的html文本作為參數,由外部靈活定義。

           /**
           * 添加圖例
           * 實質就是在地圖上添加自己的頁面元素 
           *
           * html 網頁元素
           **/
           function addLegend(html){
           var LegendControl=function () {
           this.defaultAnchor=BMAP_ANCHOR_TOP_LEFT;
           this.defaultOffset=new BMap.Size(10, 10);
           }
           LegendControl.prototype=new BMap.Control();
           LegendControl.prototype.initialize=function (map) {
           var le=$(html)[0];
           map.getContainer().appendChild(le);
           return le;
           };
           var legendCtrl=new LegendControl();
           map.addControl(legendCtrl);
           } 
          

          2.5 綜合

          有了以上函數,綜合起來就流程清晰了。以下坐標,均通過坐標拾取器獲取。

           // 機器類:經度,緯度,名稱
           function Machine(longitude, latitude, name){
           this.longitude=longitude;
           this.latitude=latitude;
           this.name=name;
           } 
           // 確定地圖的中心位置與縮放級別
           var center=new BMap.Point(110.423997,31.40979); 
           map.centerAndZoom(center, 6); // 級別 6,跨省視圖
           // 添加圖例,自由寫 html
           addLegend("<div style='font-size:12px; color:gray; width:140px; padding:5px; background:white; text-align:center; border:solid 1px gray;'>總部:<img src='head.png' style='width:16px; vertical-align:middle;' /> 設備:<img src='machine.png' style='width:16px; vertical-align:middle;' /></div>");
           // 總部位置
           var head={ longitude : 112.918702343957, latitude : 28.30070516 };
           addMarker(head.longitude, head.latitude, 'head', '總部');
           // 所有機器位置
           var machineList=[
           new Machine(114.876143,38.113315,'石家莊'),
           new Machine(112.521289,37.822014,'太原'),
           new Machine(108.989008,34.328175,'西安'),
           new Machine(117.230997,31.881961,'合肥'),
           new Machine(103.984944,30.553819,'成都'),
           new Machine(108.400295,22.862517,'南寧'),
           new Machine(113.257181,23.169067,'廣州'),
           new Machine(120.174565,30.298715,'杭州'),
           new Machine(102.881106,24.959705,'昆明')
           ];
           // 添加所有機器并連線
           for(var i=0; i<machineList.length; i++){
           addMarker(machineList[i].longitude, machineList[i].latitude, 'machine', machineList[i].name);
           addLine(head.longitude, head.latitude, machineList[i].longitude, machineList[i].latitude);
           } 
          

          3. 結語

          本文完整代碼可從此處下載:

          https://github.com/triplestudio/helloworld/blob/master/baidu_map_demo.html

          在此基礎上,可以根據需要進一步擴展功能,具體參考百度地圖開放平臺開發文檔:

          http://lbsyun.baidu.com/

          讀本文大約需要3分鐘

          主要內容:數據分析。

          適用人群:Python初學者,數據分析師,或有志從事數據分析工作的人員。

          準備軟件:Anaconda(Spyder:代碼編譯)、Navicat Premium 12(數據庫)。

          從事IT項目管理這么多年,基本上已經遺棄編程技能,但從2019年開始接觸Python,深深地迷上了這門語言,像硬件集成、數據分析,我都會用python來寫。曉風想通過本文,讓初學者們學會以下內容:

          1、Pyecharts圖表;

          2、連接數據庫;

          3、大屏看板-監控中心。

          今天,我們詳細地介紹1、Pyecharts圖表,保證大家能夠舉一反三。

          我們還可以用Matplotlib,Seaborn等進行數據分析,但今天曉風主要介紹Pyecharts(夠用),以下兩個地址大家可以收藏下(有用)。

          Pyecharts的鏈接:https://pyecharts.org/#/zh-cn/

          Pyecharts的圖示:https://gallery.pyecharts.org/#/README

          Pyecharts主要有以下幾種圖表:

          1、地圖

          2、儀表盤

          3、柱狀圖

          4、折線圖

          5、餅圖

          6、表格

          7、水球圖

          8、箱型圖

          9、日歷圖

          10、漏斗圖

          11、關系圖

          12、桑基圖

          13、散點圖

          14、詞云圖

          特意列了這些圖表,是為了告訴大家,這些圖表比較普遍,并且在Pyecharts都有現成代碼可以復制,那么接下來,曉風以柱狀圖為例,大家可以舉一反三來繪制其他圖表。

          1、打開Pyecharts的柱狀圖圖示鏈接:https://gallery.pyecharts.org/#/Bar/bar_base

          2、打開Anaconda - Spyder - 新建一個文件,將以下代碼復制到spyder,

          from pyecharts import options as opts
          from pyecharts.charts import Bar
          from pyecharts.faker import Faker
          
          
          c=(
              Bar()
              .add_xaxis(Faker.choose())
              .add_yaxis("商家A", Faker.values())
              .add_yaxis("商家B", Faker.values())
              .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副標題"))
              .render("bar_base.html")
          )

          初次引用庫,需要先到Anaconda - Environments安裝,比如安裝pyecharts庫:

          3、保存-運行程序,保存文件到自己指定的文件夾下

          4、要查看柱狀圖效果,可能要去自己保存的文件夾下找到“bar_base.html”,打開查看效果

          5、需要修改柱狀圖的內容,我們先了解下圖表的各區域表示

          我們需要修改哪部分,比如想要修改標題,標題的配置項是LegendOpts: 圖例配置項

          打開pyecharts的鏈接:https://pyecharts.org/#/zh-cn/

          找到配置項 - 全局配置項 - LegendOpts: 圖例配置項

          class LegendOpts(
              # 圖例的類型。可選值:
              # 'plain':普通圖例。缺省就是普通圖例。
              # 'scroll':可滾動翻頁的圖例。當圖例數量較多時可以使用。
              type_: Optional[str]=None,
              # 圖例選擇的模式,控制是否可以通過點擊圖例改變系列的顯示狀態。默認開啟圖例選擇,可以設成 false 關閉
              # 除此之外也可以設成 'single' 或者 'multiple' 使用單選或者多選模式。
              selected_mode: Union[str, bool, None]=None,
              # 是否顯示圖例組件
              is_show: bool=True,
              # 圖例組件離容器左側的距離。
              # left 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比,
              # 也可以是 'left', 'center', 'right'。
              # 如果 left 的值為'left', 'center', 'right',組件會根據相應的位置自動對齊。
              pos_left: Union[str, Numeric, None]=None,
              # 圖例組件離容器右側的距離。
              # right 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比。
              pos_right: Union[str, Numeric, None]=None,
              # 圖例組件離容器上側的距離。
              # top 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比,
              # 也可以是 'top', 'middle', 'bottom'。
              # 如果 top 的值為'top', 'middle', 'bottom',組件會根據相應的位置自動對齊。
              pos_top: Union[str, Numeric, None]=None,
              # 圖例組件離容器下側的距離。
              # bottom 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比。
              pos_bottom: Union[str, Numeric, None]=None,
              # 圖例列表的布局朝向。可選:'horizontal', 'vertical'
              orient: Optional[str]=None,
              # 圖例標記和文本的對齊。默認自動(auto)
              # 根據組件的位置和 orient 決定
              # 當組件的 left 值為 'right' 以及縱向布局(orient 為 'vertical')的時候為右對齊,即為 'right'。
              # 可選參數: `auto`, `left`, `right`
              align: Optional[str]=None,
              # 圖例內邊距,單位px,默認各方向內邊距為5
              padding: int=5,
              # 圖例每項之間的間隔。橫向布局時為水平間隔,縱向布局時為縱向間隔。
              # 默認間隔為 10
              item_gap: int=10,
              # 圖例標記的圖形寬度。默認寬度為 25
              item_width: int=25,
              # 圖例標記的圖形高度。默認高度為 14
              item_height: int=14,
              # 圖例關閉時的顏色。默認是 #ccc
              inactive_color: Optional[str]=None,
              # 圖例組件字體樣式,參考 `series_options.TextStyleOpts`
              textstyle_opts: Union[TextStyleOpts, dict, None]=None,
              # 圖例項的 icon。
              # ECharts 提供的標記類型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
              # 可以通過 'image://url' 設置為圖片,其中 URL 為圖片的鏈接,或者 dataURI。
              # 可以通過 'path://' 將圖標設置為任意的矢量路徑。
              legend_icon: Optional[str]=None,
          )

          比如我不想顯示這個圖例,那么is_show=False,顯示位置左對齊,那么pos_left="left"。應該修改代碼如下:

          from pyecharts import options as opts
          from pyecharts.charts import Bar
          from pyecharts.faker import Faker
          
          
          c=(
              Bar()
              .add_xaxis(Faker.choose())
              .add_yaxis("商家A", Faker.values())
              .add_yaxis("商家B", Faker.values())
              .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副標題"),
                               legend_opts=opts.LegendOpts(is_show=False)
              ) 
              .render("bar_base.html")
          )

          學習到了這里,我們就可以舉一反三,所有圖表的編寫方法是一致的。好了,大家趕緊動起來,有空就把所有圖表都操作一遍。今天的內容就到這里,接下來會教大家怎么連接數據庫,將動態的數據呈現出來,敬請期待。愿我們一起成長!

          如果覺得有用的話,請幫忙點贊、關注、收藏哦,感謝您的支持!

          Norwegian Mountain Trip

          在線實例

          插入圖像

          本例演示如何在網頁中顯示圖像。

          從不同的位置插入圖片

          本例演示如何將其他文件夾或服務器的圖片顯示到網頁中。

          (可以在本頁底端找到更多實例。)

          HTML 圖像- 圖像標簽( <img>)和源屬性(Src)

          在 HTML 中,圖像由<img> 標簽定義。

          <img> 是空標簽,意思是說,它只包含屬性,并且沒有閉合標簽。

          要在頁面上顯示圖像,你需要使用源屬性(src)。src 指 "source"。源屬性的值是圖像的 URL 地址。

          定義圖像的語法是:

          <img src="url" alt="some_text">

          URL 指存儲圖像的位置。如果名為 "boat.gif" 的圖像位于 www.w3school.com.cn 的 images 目錄中,那么其 URL 為 http://www.w3school.com.cn/images/boat.gif。

          瀏覽器將圖像顯示在文檔中圖像標簽出現的地方。如果你將圖像標簽置于兩個段落之間,那么瀏覽器會首先顯示第一個段落,然后顯示圖片,最后顯示第二段。

          HTML 圖像- Alt屬性

          alt 屬性用來為圖像定義一串預備的可替換的文本。

          替換文本屬性的值是用戶定義的。

          <img src="boat.gif" alt="Big Boat">

          在瀏覽器無法載入圖像時,替換文本屬性告訴讀者她們失去的信息。此時,瀏覽器將顯示這個替代性的文本而不是圖像。為頁面上的圖像都加上替換文本屬性是個好習慣,這樣有助于更好的顯示信息,并且對于那些使用純文本瀏覽器的人來說是非常有用的。

          HTML 圖像- 設置圖像的高度與寬度

          height(高度) 與 width(寬度)屬性用于設置圖像的高度與寬度。

          屬性值默認單位為像素:

          <img src="pulpit.jpg" alt="Pulpit rock" width="304" height="228">

          提示: 指定圖像的高度和寬度的一個很好的習慣。如果圖像指定了高度寬度,頁面加載時就會保留指定的尺寸。如果沒有指定圖片的大小,加載頁面時有可能會破壞HTML頁面的整體布局。

          基本的注意事項 - 有用的提示:

          注意: 假如某個 HTML 文件包含十個圖像,那么為了正確顯示這個頁面,需要加載 11 個文件。加載圖片是需要時間的,所以我們的建議是:慎用圖片。

          注意: 加載頁面時,要注意插入頁面圖像的路徑,如果不能正確設置圖像的位置,瀏覽器無法加載圖片,圖像標簽就會顯示一個破碎的圖片。

          更多實例

          排列圖片

          本例演示如何在文字中排列圖像。

          浮動圖像

          本例演示如何使圖片浮動至段落的左邊或右邊。

          設置圖像鏈接

          本例演示如何將圖像作為一個鏈接使用。

          創建圖像映射

          本例顯示如何創建帶有可供點擊區域的圖像地圖。其中的每個區域都是一個超級鏈接。

          HTML 圖像標簽

          標簽描述
          <img>定義圖像
          <map>定義圖像地圖
          <area>定義圖像地圖中的可點擊區域

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!


          主站蜘蛛池模板: asmr国产一区在线| 无码人妻一区二区三区在线视频 | 在线观看午夜亚洲一区| 久久精品无码一区二区无码| 一区二区精品在线观看| 久久精品一区二区影院 | 日本精品一区二区三区四区| 日本激情一区二区三区| 一区二区三区国产精品| 亚洲色精品vr一区二区三区| 激情内射亚州一区二区三区爱妻| 精品久久久久久中文字幕一区| 国产成人精品第一区二区| 亚洲一区二区影视| 老熟女高潮一区二区三区| 亚洲一区综合在线播放| 日本成人一区二区| 精品少妇一区二区三区视频| 狠狠色婷婷久久一区二区三区 | 岛国无码av不卡一区二区 | 亚洲一区二区三区高清在线观看 | 国产精品亚洲高清一区二区| 视频一区二区在线播放| 亚洲性日韩精品一区二区三区| 杨幂AV污网站在线一区二区| 色一情一乱一伦一区二区三区| 亚洲乱码国产一区网址| 国偷自产Av一区二区三区吞精 | 在线观看国产一区二三区| 中文字幕无码不卡一区二区三区 | 日本精品无码一区二区三区久久久| 中文字幕AV无码一区二区三区| 亚洲AV无码一区二区乱子仑| 综合一区自拍亚洲综合图区| 日本高清无卡码一区二区久久| 国产伦精品一区二区三区视频猫咪 | 精品一区二区三区免费视频| 美女啪啪一区二区三区| 3d动漫精品啪啪一区二区中| 成人精品视频一区二区| 无码av不卡一区二区三区|