基於APICloud的bmap模塊的應用

APICloud是一個利用網頁語言做APP的一個平臺吧,這裏主要講述下在利用APICloud做地圖類應用時如何調用bmap模塊,相應的其他模塊的調用方式也是相同的,下面的內容就假設我們都已經熟悉了APICloud基本使用及一定的H5基礎。

一、利用APICloud創建一個新的應用

    首先我們在開發端創建一個名爲“LoveMap”的新應用,創建結束後將爲下述樣式:


上述信息在創建完成應用後index文件來寫入我們APP打開後的第一個界面,而HTML文件夾用來存放所寫的子界面文件等,image用來存放界面中所需要的圖片。

二、在index界面寫個比較醜的按鈕界面

     先貼下代碼:

<body>  <!--界面的主要內容部分,上述爲相對應的CSS樣式-->
    <div id="wrap">
        <div id="header">
            <h1>百度模塊調用</h1>  <!--頁面頭部所顯示的文字字樣-->
        </div>
        <div class="main" id="main">
             <a class="anniu" id="anniu" tapmode="tap-active" onclick="openMap();">登錄</a><!--在主界面部分寫入登錄字樣-->
             <a class="anniu" id="anniu" tapmode="tap-active" onclick="openMap();">登錄</a>
             <a class="anniu" id="anniu" tapmode="tap-active" onclick="openMap();">登錄</a>
        </div>
        <div id="footer">
            <h5>Copyright &copy;<span id="year"></span> </h5><!--在主界面部分底部部分-->
        </div>
    </div>
</body>

      顧名思義,上述就是寫了一個很醜的登錄按鈕,當然上述a元素所包含的內容表示一行,該行的作用就是在類main中放置了三個相當於按鈕的行,爲了描述a的作用就直接複製了三次,這樣就能看到我們很醜的按鈕就建立成功了。該部分的內容讀者可以採用相應的CSS進行更美觀化的處理,上述的按鈕在樣式上只是設置了簡單的色彩及觸發後的變化,很醜的樣式如下:


     上面就是我們所定義的按鈕,接下來就是本文重點提到的模塊的引用了。

二、激活我們的按鈕

     我們都比較熟悉的內容就是做PPT時候的超鏈接或者換頁這樣的功能,簡單的來說index界面的效果也可以這麼理解,上面我們定義了按鈕,然後如何調用我們的百度地圖呢,答案很簡單,我們爲“登錄”按鈕賦予一定的功能。

首先回到上述按鈕的代碼中:

<a class="anniu" id="anniu" tapmode="tap-active" onclick="openMap();">登錄</a>

      其中onclick的作用就相當於超鏈接了,這裏它的作用就是當我們點擊“登錄”後就會觸發openMap()函數的執行,接下來爲了使得我們能夠打開並關閉百度地圖模塊,我們不能直接在openMap()中就直接打開地圖,這裏我們將地圖模塊加載到另外一個網頁中,展示到APP中就是另外一個界面內,接下來我們利用APICloud所提供的openWindow()創建下一個界面:

function openMap(){ //定義登錄按鈕點擊後的界面
    api.openWin({
	       name: 'MAP',
	       url: 'html/main.html',
	       rect: {
		       x:0,
		       y:48,
		       w:'auto',
		       h:'auto'
	       }
       });
};

      這樣就爲“登錄”附加好了功能,然後就是如何將百度地圖模塊搭載到main界面內了。首先提一點,就是在APICloud開發中該自定義函數要放置在apiready外面,如果放到裏面就會自動執行了,那麼你所定義的按鈕界面就曇花一現,打開APP的瞬間就會自動跳轉到main界面了。

三、調用bmap模塊

       百度地圖模塊的調用之前記得先去開發控制檯模塊部位添加bmap模塊,


     然後去百度地圖開發網站爲你自己的APP申請百度地圖的AK,在config中完成相應的配置。


      準備工作完成後我們就能夠在main界面調用百度地圖模塊了,這裏我們先完成了地圖模塊調用的基本操作,就是地圖模塊調用後全屏打開地圖,並展示用戶所在位置的附近地圖情況,這一點我們從開發文檔中將看到是人爲設定的地圖中心,顯然是不合理的,所以正常使用下的形式如下代碼所示:

apiready = function(){
    var map = api.require('bMap');   //申明百度地圖模塊
    var winHeight = api.winHeight;
		  var winWidth = api.winWidth;   //賦予變量窗口寬度或者高度值
		  var lon_user;
		  var lat_user;
		  map.open({
	      rect:{
	         x: 0,
	         y: 0,
	         w: 'auto',
	         h: winHeight   //761  //-78
	         },
	         zoomLevel:15,
	         showUserLocation : true
	         },function(ret){
	         map.getLocation({
	            accuracy: '10m',
	            autoStop:true,
	            filter: 1
	            },function(ret){
	            var sta = ret.status;
	            lon_user = ret.lon;
	            lat_user = ret.lat;
	         map.setCenter({
	            coords: {
	            lon: lon_user,
	            lat: lat_user
	            },
	            animation: true
	            });    
	         });
	         
	   });
		

    };

       上述我們就將相應的地圖調用的功能放到apiready函數中,目的就是點擊完“登錄”後所轉到的main界面就將全屏加載地圖了。


      上面用戶所在位置的小藍點被我拖走了,好了上述代碼的主要功能可以從開發文檔中看到,這裏只是個簡單的應用,爲了更清晰的熟悉main界面如何搭載的地圖模塊,下面給下完整的代碼:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <title>Hello APP</title>
    <link rel="stylesheet" type="text/css" href="../css/api.css" />
	<style>
		#con{
			margin: 10px;
			font-size: 24px; 
		}
		ul{
			margin-bottom: 10px;
		}
		ul li{ 
			margin: 5px 10px;
			padding: 5px;
			color: #000;
			word-wrap: break-word;
		}
	</style>
</head>
<body>
    
</body>
<script type="text/javascript" src="../script/api.js"></script>
<script type="text/javascript">
    apiready = function(){
    var map = api.require('bMap');   //申明百度地圖模塊
    var winHeight = api.winHeight;
		  var winWidth = api.winWidth;   //賦予變量窗口寬度或者高度值
		  var lon_user;
		  var lat_user;
		  map.open({
	      rect:{
	         x: 0,
	         y: 0,
	         w: 'auto',
	         h: winHeight   //761  //-78
	         },
	         zoomLevel:15,
	         showUserLocation : true
	         },function(ret){
	         map.getLocation({
	            accuracy: '10m',
	            autoStop:true,
	            filter: 1
	            },function(ret){
	            var sta = ret.status;
	            lon_user = ret.lon;
	            lat_user = ret.lat;
	         map.setCenter({
	            coords: {
	            lon: lon_user,
	            lat: lat_user
	            },
	            animation: true
	            });    
	         });
	         
	   });
		

    };
</script>
</html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章