基於MFC與第三方類CWebPage的百度地圖API開發范例


在進行百度地圖API開發之前你須要到http://developer.baidu.com/map申請密匙

 

密匙申請之后就能夠進行百度地圖API的開發了。

以下我們以在visual c++6.0里進行地圖坐標標注為范例解說百度地圖API開發

 

1.新建一個工廠MFCproject取名為GeoDemo

 

 

2.選擇為基於對話框的project

 

 

3.創建成功例如以下

 

 

4.簡單調整頁面布局

 

 

5.在界面插入一個瀏覽器控件

 

6.插入之后的效果

 

 

 

7.先執行一下看看

 

 

8.接下來我們寫一個簡單的html頁面,代碼大概例如以下

當中也包含一個javascript函數,不會寫的可參考http://developer.baidu.com/map/jsdemo.htm#a1_2

我們把這個html文件命名為geodemo.html並放置到project文件夾下:

html源代碼為:

復制代碼
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 5 <style type="text/css">
 6 body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}
 7 #l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;}
 8 #r-result{height:100%;width:20%;float:left;}
 9 </style>
10 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你自己申請的密匙"></script>
11 <title>百度地圖的Hello, World</title>
12 </head>
13 <body>
14 <div id="allmap"></div>
15 </body>
16 </html>
17 <script type="text/javascript">
18 var map = new BMap.Map("allmap");  
19 map.centerAndZoom(new BMap.Point(104.071216,30.666031), 12);
20 map.enableScrollWheelZoom();                            //啟用滾輪放大縮小
21 map.addControl(new BMap.NavigationControl());                                 
22 map.addControl(new BMap.OverviewMapControl());
23 map.addControl(new BMap.ScaleControl());                
24 map.enableScrollWheelZoom();                           
25 map.addControl(new BMap.MapTypeControl());
26 
27 var top_left_navigation = new BMap.NavigationControl();  //左上角,加入默認縮放平移控件
28 
29 
30 function justmarkfun(JD,WD)
31 {
32     var marker1 = new BMap.Marker(new BMap.Point(JD,WD));  // 創建標注
33     window.map.addOverlay(marker1);              // 將標注加入到地圖中
34 }
35 </script>
復制代碼

 

當然里面的一些屬性可參考百度地圖API說明進行編寫,我使用的是javascript 大眾版本號

大家能夠依據自己的須要選擇不同類型的API

 

 

這里我將地圖的初始中心定位在成都,關於經緯度的查詢能夠到站點:http://api.map.baidu.com/lbsapi/getpoint/index.html

 

 

9.我們繼續為對話框的瀏覽器控件關聯一個控件變量為m_myweb

當然同一時候會提示加入CWebBroswer2類頭文件和源文件

 

10.為顯示該點加入響應

 

 

 

11.在CGeoDemoDlg的OnInitDialog()函數中加入例如以下代碼:

注意,html文件要以url方式

 

 

12.導入CWebPage類,該類為C++提供了一種javascript接口

我們來看一個CWebPage一個簡單的接口說明:

1 bool CallJScript(const CString strFunc,const CString strArg1,const CString strArg2,CComVariant* pVarResult = NULL);

第一個參數代表要調用的js函數的函數名

第二個第三個參數代表要傳入的參數,顯然我們應該講經度和緯度傳入當中

最后一個是js調用的返回值

 

13.將webpage.h頭文件包括到CGeoDemoDlg.cpp中同一時候在OnShow()加入例如以下代碼:

這里m_JD和m_WD是與編輯框控件的兩個CString類型變量,傳入經度緯度值

這里參數的個數要與javascript函數justmakefun函數的個數同樣,並且順序

要保持一致

javascript代碼例如以下:

1 function justmarkfun(JD,WD)
2 {
3     var marker1 = new BMap.Marker(new BMap.Point(JD,WD));  // 創建標注
4     window.map.addOverlay(marker1);              // 將標注加入到地圖中
5 }

要編寫其它功能的js函數參考百度地圖API對應的接口參考

 

 

14.如今我們在坐標拾取工具中找到川大的坐標104.089038,30.638195

輸入到經緯度中並運行:


大功告成



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM