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