如何让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];


目录
相关文章
|
3月前
|
Linux Shell 网络安全
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
|
3月前
|
安全 Java 应用服务中间件
【Azure 应用服务】App Service 默认页面暴露Tomcat版本信息,存在安全风险
【Azure 应用服务】App Service 默认页面暴露Tomcat版本信息,存在安全风险
|
3月前
【Azure App Services】多次操作App Service伸缩实例遇见限制操作记录
【Azure App Services】多次操作App Service伸缩实例遇见限制操作记录
|
1月前
|
前端开发 UED 开发者
uni-app:去除导航栏&跨域的问题&blobe查看图片&v-deep&页面操作 (五)
本文介绍了几个前端开发技巧:1) 如何通过设置 `navigationStyle` 为 `custom` 去除顶部导航;2) 解决跨域问题的方法,包括使用 `dotenv` 加载全局变量和配置 `devServer` 的代理;3) 使用 Blob 和 FileReader 查看图片;4) 利用 `v-deep` 深度作用选择器修改样式;5) 修改页面左上角返回按钮的行为。
|
3月前
|
Java PHP
【应用服务 App Service】 App Service Rewrite 实例 - 反向代理转发功能
【应用服务 App Service】 App Service Rewrite 实例 - 反向代理转发功能
【应用服务 App Service】 App Service Rewrite 实例 - 反向代理转发功能
|
3月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
3月前
|
安全 JavaScript 应用服务中间件
【Azure Function App】如何修改Azure函数应用的默认页面呢?
【Azure Function App】如何修改Azure函数应用的默认页面呢?
|
3月前
|
Python
【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"
【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"
|
3月前
|
JavaScript 前端开发
【Azure Developer】在App Service上放置一个JS页面并引用msal.min.js成功获取AAD用户名示例
【Azure Developer】在App Service上放置一个JS页面并引用msal.min.js成功获取AAD用户名示例
|
3月前
|
JavaScript Linux 应用服务中间件
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题

热门文章

最新文章