在ionic/cordova中使用百度地圖插件

ionic項目中,若是想實現定位功能,能夠使用ng-cordova提供的cordova-plugin-geolocationjavascript

但因爲高牆的緣故,國內andorid環境下,此插件不起做用(ios環境下可用)。php

國內比較好的是現實使用百度地圖提供的API,來實現定位,以及地圖的一系列擴展功能。html

如今咱們使用'Weizhe He'提供的cordova-qdc-baidu-location來嘗試建立簡單的定位appjava

 

Stpe1:建立一個項目(此處使用的是tab類型的項目,建立方式可參照我前一篇如何離線建立Ionic1項目
android

Stpe2:申請百度地圖API祕鑰ios

      應用類型請選擇:Andorid應用git

           包名:如圖所示的名字(config.xml內 widget節點中id的值)github

          

Stpe3:在項目中添加cordova-qdc-baidu-location插件api

安裝插件命令:ionic plugin add https://github.com/hewz/cordova-baidu-location --variable API_KEY="你的應用祕鑰"
ps:
卸載插件命令:ionic plugin rm com.hewz.plugins.baidu.location
列出全部插件:ionic plugin list            

           安裝完畢後可見下圖內容:瀏覽器

          

Stpe4:在項目中添加百度地圖API的JS引用

           打開Index.html

          4.1 在head中添加代碼

<meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-eval'; connect-src * 'unsafe-eval';object-src 'self'; style-src * 'unsafe-inline'; img-src *" >
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你應用的祕鑰"></script>

         4.2 編寫插件使用代碼

          4.2.1 打開www->templates->tab-dash.html修改代碼爲:

<ion-view view-title="百度地圖測試">
  <ion-content>
    <ion-list>
      <ion-item>
        <button class="button button-block button-calm" ng-click="getpoint()"> 開始定位 </button>
      </ion-item>
      <ion-item>
        經度:{{ret.longitude}}    緯度:{{ret.latitude}}
      </ion-item>
      <ion-item>
        <div id="allmap" style="height: 600px;">

        </div>
      </ion-item>
    </ion-list>
  </ion-content>
</ion-view>

          4.2.2 打開www->js->controllers.js修改[DashCtrl]代碼爲:

.controller('DashCtrl', function($scope) {
  var map = new BMap.Map("allmap");                         // 建立Map實例
  var point = new BMap.Point(104.108164,30.773969);         // 建立點座標
  $scope.ret = {latitude:30.773969, longitude:104.108164};

  map.centerAndZoom(point,19);                              // 初始化地圖,用城市名設置地圖中心點
  var marker = new BMap.Marker(point);                      // 建立標註
  map.addOverlay(marker);                                   // 將標註添加到地圖中

  $scope.getpoint = function() {
    baidu_location.getCurrentPosition(function(data){
      $scope.ret = {longitude:data.longitude, latitude:data.latitude};

      var map = new BMap.Map("allmap");                           // 建立Map實例
      var point = new BMap.Point(data.longitude, data.latitude);  // 建立點座標
      map.centerAndZoom(point,19);

      var marker = new BMap.Marker(point);                        // 建立標註
      map.addOverlay(marker);                                     // 將標註添加到地圖中
    }, function(err){
      alert("錯誤:"+ err)
    });
  };
})

Stpe5:測試

須要注意的是,咱們在瀏覽器測試項目的時候,會提示baidu_location沒有定義,實際須要在手機上體驗完整功能。

手機鏈接電腦後,使用ionic小助手,打開項目並真機調試,直接將app安裝到手機,注意打開手機USB調試模式,保持手機解鎖並點亮,ionic小助手編譯安裝完成,可能經歷一下幾步:

 

其餘:

 百度地圖API示例

 

特別感謝:Weizhe He

相關文章
相關標籤/搜索