如何让app多个页面只用一个地图实例

简介: 如何让app多个页面只用一个地图实例

地图唯一实例,放置不同地图页面切换,地图页面和非地图页面来回切换导致内存持续上涨问题。

声明

//对外开放全局变量,获取高德地图唯一实例指针

//由于高德地图只能初始化一次,重复释放后初始化会出现内存不能正常释放的情况,所以使用全局高德地图指针

//由于ARC机制是若有有一个地方应用,就不会把对象释放了掉,所以全局百度地图指针能保证高德地图的唯一实例不会被释放掉。

//使用高德地图的地方全部通过该函数引用获取唯一实例

//若获取到后先判断是否为空(初始化过),若为空直接初化它,若非空把该对象强制转化为MAMapView *类型的指针,调整frame,设置代理就可以使用了

//由于非高德地图的代理对象不允许定义MAMapView类的对象指针,所以用它的基类(UIView *)指向它。

//高德地图基类指针专用

@property(nonatomic,strong) UIView *mymapView;

pragma mark MAMap

-(UIView *)getMAMapViewInstance;

-(void)setMAMapViewInstance : (UIView *)mymapView;

实现

-(UIView *)getMAMapViewInstance

{

FLDDLogDebug(@”函数”);

return self.mymapView;

}


-(void)setMAMapViewInstance : (UIView *)mymapView

{

FLDDLogDebug(@”函数”);

if(nil == self.mymapView)

{

self.mymapView = mymapView;

}

}


3D地图中的使用

MAMapView namapView = (MAMapView )([[Singleton sharedInstance] getMAMapViewInstance]);

if(nil == namapView)

{

_mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, kControlWidth, kControlHeight)];

[[Singleton sharedInstance] setMAMapViewInstance:_mapView];

}

else

{

CGRect newRect = CGRectMake(0, 0, kControlWidth, kControlHeight);

namapView.frame = newRect;

_mapView = namapView;

}

_mapView.delegate = self;
[self.view addSubview:_mapView];

// //定位

_mapView.showsUserLocation = YES;

//地图跟着位置和方向移动

[_mapView setUserTrackingMode:MAUserTrackingModeFollow animated:YES];

_mapView.showsCompass = NO;
//楼块隐藏
_mapView.buildingsDisabled=YES;
//后台定位 可持久记录位置信息。
_mapView.pausesLocationUpdatesAutomatically = NO;
//不能旋转
_mapView.rotateEnabled=NO;
_mapView.distanceFilter = DISTANCE_FILTER;

// _mapView.desiredAccuracy = kCLLocationAccuracyHundredMeters;

// mapView.showsScale = YES;

// [mapView setZoomLevel:KmaxLEVEL animated:NO];

//自定义精度圈样式 去除精度圈

_mapView.delegate = self;


热力图中的使用

MAMapView namapView = (MAMapView )([[Singleton sharedInstance] getMAMapViewInstance]);

if(nil == namapView)

{

namapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, kControlWidth, kControlHeight)];

[[Singleton sharedInstance] setMAMapViewInstance:namapView];

self.mapView = namapView;

}

else

{

namapView.frame = self.view.bounds;

self.mapView = namapView;

}

_mapView.delegate = self;
_mapView.showsUserLocation = YES;
_mapView.showsUserLocation = YES;

导航中的使用

FLDDLogDebug(@”函数”);

self.mapView = (MAMapView *)[[Singleton sharedInstance] getMAMapViewInstance];

if(nil == _mapView)

{

_mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, kControlWidth, kControlHeight)];

[[Singleton sharedInstance] setMAMapViewInstance:_mapView];

}

else

{

self.mapView.frame = self.view.bounds;

}

_mapView.delegate = self;

_mapView.showsUserLocation = YES;

[self.view addSubview:self.mapView];


高德地图终于支持多实例了,不用这种曲线救国的方式实现多实例了。

废除:// self.naviViewController = [[AMapNaviViewController alloc] initWithMapView:mymapView delegate:self];

采用新的代理函数:

self.naviViewController = [[AMapNaviViewController alloc] initWithDelegate:self];


目录
相关文章
|
5月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
888 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
466 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
6月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
496 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
5月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
283 0
|
6月前
|
网络协议 Java Linux
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
在 Azure App Service(Windows 和 Linux)中部署应用时,分析网络连接状态是排查异常、验证端口监听及确认后端连接的关键。本文介绍如何在 Linux 环境中使用 `netstat` 命令查看特定端口(如 443、3306、6380)的连接情况,并解析输出结果。同时说明在 Windows App Service 中 `netstat` 被禁用的情况下,如何通过门户抓包等替代方法进行网络诊断。内容涵盖命令示例、操作步骤及附录说明,帮助开发者快速掌握云环境中的网络分析技巧。
177 11
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
883 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
502 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
9月前
|
定位技术
《仿盒马》app开发技术分享-- 地图选点(27)
上一节我们实现了地图的简单展示,这一节我们要实现的内容是,根据展示的地图,实现当前定位功能,当前位置的poi地址功能,以及列表的展示,给地图添加标记,展示自己的当前定位
168 4
|
9月前
|
定位技术 API
《仿盒马》app开发技术分享-- 原生地图展示(26)
上一节我们实现了获取当前用户的位置,并且成功的拿到了经纬度,这一节我们就要根据拿到的经纬度,结合我们其他的知识点来实现地图的展示。
212 4
|
9月前
《仿盒马》app开发技术分享-- 个人中心页面(19)
上一节我们实现了分类页面的所有联动效果,这一节我们要开始完成一个新的页面,这个页面是我们主界面的第四个板块,就是个人中心页面。在这个模块,我们可以显示一些用户信息,以及用户相关的各类功能的入口
144 4