Cordova項目中喚醒iOS原生地圖

Cordova項目中喚醒iOS原生地圖APP的調用方式

寫代碼用了半個小時,還寫多了,調試花了我五個小時,只能說在Xcode里面調JS簡直就是不人道的選擇

首先貼上原生調用地圖APP的代碼僅供參考:

//
//  CDVAppleMap.m
//  HelloCordova
//
//  Created by MMMOOO on 2018/3/25.
//

#import <Foundation/Foundation.h>
#import <Cordova/CDVPlugin.h>

#import <Cordova/CDV.h>
#import <Mapkit/MapKit.h>

@interface CDVAppleMap : CDVPlugin

-(void) openAppleMap:(CDVInvokedUrlCommand *) command;

@end

@implementation CDVAppleMap

-(void) openAppleMap:(CDVInvokedUrlCommand *)command{
    [self.commandDelegate runInBackground:^{
        // 獲取經緯度
        NSNumber *longitude = command.arguments[0];
        NSNumber *latitude = command.arguments[1];
        // 構造坐標點
        CLLocationCoordinate2D coordinate;
        coordinate.longitude = longitude.floatValue;
        coordinate.latitude = latitude.floatValue;
        
        // 當前位置
        MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
        // 導航位置
        MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil ]];
        //打開地圖導航
        [MKMapItem openMapsWithItems:@[currentLocation, toLocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving, MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool: YES]}];
        // 返回成功結果
        CDVPluginResult* pluginResult = nil;
        NSDictionary *jsonObj = [ [NSDictionary alloc] initWithObjectsAndKeys: @"true", @"success", nil];
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:jsonObj];
        NSString* callbackId = command.callbackId;
        [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];
    }];
}

@end

當然如果你喜歡寫標準代碼的話,請按照頭文件(.h)和源文件(.m)的方式進行劃分。

接著,是對本原生代碼的插件式引用,需要在config.xml文件中引入feature:

<feature name="AppleMap">
        <param name="ios-package" value="CDVAppleMap" />
        <param name="onload" value="true" />
</feature>

之前按照其他Cordova自動導入的plugin對其進行了模塊化的代碼編寫,寫完以后,不僅調試非常麻煩浪費了大量時間,而且使用起來根本沒必要那么用,所以就刪除了那兩塊的代碼,最后調用原生OC的代碼其實非常簡單,等徹底搞通的時候,最后知道真相的我眼淚掉下來。那么下面請看代碼:

cordova.exec(callback, callback, "AppleMap", "openAppleMap", [114, 30]);

function callback(res){
      console.log(res);
}

就是這么簡單,就可以原地打開iOS自帶的高德地圖進行導航了,馬德正在寫這個文檔的我真的覺得日了嘯天犬,浪費了五個小時尋找大精靈之泉的時間到底是為了干嘛。

以上。
2018-03-25 18:42:40 星期日

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容