この例は、WinForm で Baidu Maps を使用する方法の簡単な紹介です。 Baidu Map は現在、Android 開発、IOS 開発、Web 開発、およびサービス インターフェイスをサポートしています。詳細については、「Baidu Map Open Platform」を参照してください。
[Baidu Map の動的読み込み] 関連する知識ポイント:
WebBrowser コントロール、このコントロールは VS に付属するコントロールで、ユーザーが WinForm フォームで Web ページを移動できるようにします。主に Navigate 関数が使用され、指定された URL (Uniform Resource Locator) にあるドキュメントを新しいブラウザ ウィンドウまたは System.Windows.Forms.WebBrowser コントロールに読み込みます。このコントロールの詳細については、MSDN の詳細な説明を参照してください。
Baidu Map JavaScript API。Web ページに Baidu Map を表示する API を呼び出します。
レンダリングは次のとおりです:
Baidu Mapを呼び出すための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 }
[静的画像のロード]には知識ポイントが含まれます
Baidu の静的画像インターフェイスを呼び出します
PictureBox VS には、画像を表示するために使用される Windows ピクチャ ボックス コントロールを表す画像コンテナが付属しています。
HttpWebRequest、HttpWebResponse WinForm で http リクエストを送受信します。
スレッドは、インターフェースがスタックするのを防ぐためにバックグラウンドプロセスで呼び出されます。
返されたバイトストリームを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¢er=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 }
追記:
Baidu に電話する 地図関連の機能を使用するには、まずキー (AK) を申請する必要があります。個人的な開発や学習の場合は、携帯電話を使用して登録できます。
上記は、C# プログラムに埋め込まれた Baidu Map のコンテンツです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。