fluter 使用百度地图

本文详细介绍了在Flutter中开发百度地图插件的过程,包括如何处理地图定位、选址功能,解决内存泄露问题,以及实现地图移动后的地理位置反查。同时,文章提供了启动activity并返回结果的解决方案。

github上有一个百度地图的实现 xx_fluttify,他不只有百度地图,还有各种地图的实现,后来改收费了,高德的key没申请下来,我就下载了百度的lib。

用地图没大问题,就是速度不咋地,platformview的原因。当我需要geo反查时出现问题了,这个库一直有回调,即使我已经把当前的widget关了,各种dispose,依然会有查询结果回调,这显然是内存泄露了。

基于速度与内存的考虑,地图定位选址功能就不用它了。

毕竟写一个拖动地图选址还是不难地。而且native的view速度快多了。

遇到了一个麻烦,写一个plugin,但是要启动activity,然后选完以后onresult返回,插件里怎么启动,怎么返回呢?

查了下其它插件,里面有一个可以获取activity的。

class BaiduMapPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware 插件类
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) 这个方法会走
public static void registerWith(Registrar registrar) {}这个旧方法不会走了。但也做一些适配
先声明private Activity activity;

 public static void registerWith(Registrar registrar) {
        System.out.println("registerWith:");
        final MethodChannel channel = new MethodChannel(registrar.messenger(), "com.archko.map/baidu_map");
        BaiduMapPlugin baiduMapPlugin = new BaiduMapPlugin();
        baiduMapPlugin.activity = registrar.activity();
        channel.setMethodCallHandler(baiduMapPlugin);
    }
得到了activity了。

public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
        System.out.println("onMethodCall:" + call.method);
        if (call.method.equals("getLocation")) {
            if (null != activity) {
                resultMap.put(String.valueOf(REQUEST_GPS), result);
                Intent intent = new Intent(activity, AreaSelectorWithMapActivity.class);
                activity.startActivityForResult(intent, REQUEST_GPS);
            }
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值