美文网首页
Cordova项目中唤醒iOS原生地图

Cordova项目中唤醒iOS原生地图

作者: MMMOOO | 来源:发表于2018-03-25 18:47 被阅读60次

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

相关文章

网友评论

      本文标题:Cordova项目中唤醒iOS原生地图

      本文链接:https://www.haomeiwen.com/subject/tflkcftx.html