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 星期日