美文网首页Weex学习iOS视角
weex调用原生百度地图

weex调用原生百度地图

作者: 十一岁的加重 | 来源:发表于2017-07-26 14:15 被阅读12757次

第一步、写一个weex的模块,继承自NSObject,实现协议WXModuleProtocol

#import <Foundation/Foundation.h>
#import "WXModuleProtocol.h"

@interface WXBaiduMapNaviModule : NSObject<WXModuleProtocol>

@end
#import "WXBaiduMapNaviModule.h"

@implementation WXBaiduMapNaviModule
/// 绑定
@synthesize weexInstance;
/// vue.js里可以调用这个传入相关参数给原生应用
WX_EXPORT_METHOD(@selector(openBMKAPPOrBMKWebWithStartName:startLongitude:startLatitude:endName:endLongitude:endLatitude:callback:))

/// vue.js要调用的原生方法
- (void)openBMKAPPOrBMKWebWithStartName:(NSString *)startName
                         startLongitude:(double)startLongitude
                          startLatitude:(double)startLatitude
                                endName:(NSString *)endName
                           endLongitude:(double)endLongitude
                            endLatitude:(double)endLatitude
                               callback:(WXModuleCallback)callback {

    CLLocationCoordinate2D coor1;
    coor1.longitude = startLongitude;
    coor1.latitude = startLatitude;
    
    CLLocationCoordinate2D coor2;
    coor2.longitude = endLongitude;
    coor2.latitude = endLatitude;
    
    
    BMKNaviPara *para = [[BMKNaviPara alloc] init];
    
    BMKPlanNode *start = [[BMKPlanNode alloc] init];
    start.pt = coor1;
    start.name = startName;
    para.startPoint = start;
    
    // 初始化指定终点节点
    BMKPlanNode *end = [[BMKPlanNode alloc] init];
    end.pt = coor2;
    end.name = endName;
    para.endPoint = end;
    
    para.appScheme = 这里填上你在百度地图申请的key;
    [BMKNavigation openBaiduMapNavigation:para];
    /// 这个好像官网都加了,先加上
    callback(@{@"result":@"success"});
}


@end

第二步、注册导航模块

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/// ...
/// 这个名字要跟vue.js里写的一样,才能调用
    [WXSDKEngine registerModule:@"mapNavigation" withClass:NSClassFromString(@"WXBaiduMapNaviModule")];

/// ...

}

第三步,weex项目中调用

/// ...
    <div  @click="naviTest">

/// ...

methods:{
        goAddStore(){
/// mapNavigation这个名字要跟ios appdelegate didfinish..里的注册那个模块的名字一样
            var eventModule = weex.requireModule('mapNavigation');
           
///  用eventModule调用,六个参数(五个实际参数,一个callback对应   function(ret) {
                nativeLog(ret);
            }
不知道是不是有点类似 Swift里的闭包
)

eventModule.openBMKAPPOrBMKWebWithStartName('起点1',116.29022897479551,40.05732677308341,'终点2',116.421885,39.93857400000000,function(ret) {
                nativeLog(ret);
            });
    },
/// ...

相关文章

网友评论

  • 豆志昂扬:weex在实际项目中好用吗?对比其他框架
    十一岁的加重:@豆志昂扬 轻量级的rn,用js写一套代码,自动转换成安卓iOS,开发更省事
    豆志昂扬:@十一岁的加重__求点赞 选择的理由是什么?
    十一岁的加重:@豆志昂扬 我们公司已经准备在生产环境试用了

本文标题:weex调用原生百度地图

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