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);
}

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

被折叠的 条评论
为什么被折叠?



