C# 程式中嵌入百度地圖

來源:互聯網
上載者:User
本例是對WinForm中使用百度地圖的簡要介紹。百度地圖目前支援Android開發,IOS開發,Web開發,服務介面,具體可以參照'百度地圖開放平台'。

【動態載入百度地圖】涉及到的知識點:

  • WebBrowser控制項,此控制項是VS內建的控制項,使使用者可以在WinForm表單中導航網頁。主要用到Navigate函數,此函數將指定的統一資源定位器 (URL) 處的文檔載入到瀏覽器新視窗或 System.Windows.Forms.WebBrowser 控制項中。有關此控制項的詳細資料,請參照MSDN上詳細說明。

  • 百度地圖JavaScript API,調用API在網頁中顯示百度地圖。

如下:

關於調用百度地圖的Html代碼如下:

 1 <!DOCTYPE html>  2 <html>  3 <head>  4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  5     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  6     <style type="text/css">  7     body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";}  8     </style>  9     <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=AKCode需要申請"></script> 10     <title>地圖展示</title> 11     <script type="text/javascript"> 12         window.onload = function () { 13             // 百度地圖API功能 14             var map = new BMap.Map("allmap"); 15             var point = new BMap.Point(116.404, 39.915); 16             map.centerAndZoom(point, 15); 17             // 編寫自訂函數,建立標註 18             function addMarker(point) { 19                 var marker = new BMap.Marker(point); 20                 map.addOverlay(marker); 21             } 22             // 隨機向地圖添加25個標註 23             var bounds = map.getBounds(); 24             var sw = bounds.getSouthWest(); 25             var ne = bounds.getNorthEast(); 26             var lngSpan = Math.abs(sw.lng - ne.lng); 27             var latSpan = Math.abs(ne.lat - sw.lat); 28             for (var i = 0; i < 25; i++) { 29                 var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7)); 30                 addMarker(point); 31             } 32             // 33             var top_left_control = new BMap.ScaleControl({ anchor: BMAP_ANCHOR_TOP_LEFT }); // 左上方,添加比例尺 34             var top_left_navigation = new BMap.NavigationControl();  //左上方,添加預設縮放平移控制項 35             var top_right_navigation = new BMap.NavigationControl({ anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL });  //右上方,僅包含平移和縮放按鈕 36             map.addControl(top_left_control); 37             map.addControl(top_left_navigation); 38             map.addControl(top_right_navigation);    39         }40     </script>41 </head>42 <body>43     <div id="allmap"></div>44 </body>45 </html>

關於WinForm調用Html的代碼如下:

    private void BaiduMap01_Load(object sender, EventArgs e)2         {3             //htm檔案Copy到程式根目錄4             this.wbBaidu.Navigate(AppDomain.CurrentDomain.BaseDirectory + "Baidu01.htm",false);5         }

【載入靜態圖】涉及到知識點

  • 調用百度的靜態圖介面

  • PictureBox VS內建的圖片容器,表示用於顯示映像的 Windows 圖片框控制項。

  • HttpWebRequest,HttpWebResponse 在WinForm中發送/接收 http請求。

  • Thread 為了不讓介面卡死,採用在後台進程中調用。

  • 將返回的位元組流,轉換成Image對象

如下:

關於在WinForm程式中調用靜態圖API的代碼如下:

 1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Data;  5 using System.Drawing;  6 using System.Linq;  7 using System.Text;  8 using System.Windows.Forms;  9 using System.Net; 10 using System.IO; 11 using System.Threading; 12  13 namespace DemoSharp 14 { 15     public partial class BaiduMap02 : Form 16     { 17         public BaiduMap02() 18         { 19             InitializeComponent(); 20         } 21  22         private void btnLoad_Click(object sender, EventArgs e) 23         { 24             //線上程中執行 25             Thread t = new Thread(new ThreadStart(InitMap)); 26             t.Start(); 27         } 28  29         private void InitMap() { 30             string url = "http://api.map.baidu.com/staticimage/v2?ak=AKCode需要申請&mcode=666666&center=116.403874,39.914888&width=910&height=400&zoom=11"; 31             HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 32             request.Method = "GET"; 33             HttpWebResponse response = request.GetResponse() as HttpWebResponse; 34             while (true) 35             { 36                 if (response.StatusCode == HttpStatusCode.OK) 37                 { 38                     Image img = Image.FromStream(response.GetResponseStream()); 39                     this.pictureBox1.Image = img; 40                     break; 41                 } 42                 Thread.Sleep(1000); 43             } 44         } 45     } 46 }

後記:

調用百度地圖相關功能時,需要先申請密鑰(AK),個人開發學習使用手機進行註冊即可。

以上就是C# 程式中嵌入百度地圖的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.