如何让app多个页面只用一个地图实例
来源:互联网 发布:阿里云免费域名注册 编辑:程序博客网 时间:2024/05/16 15:52
地图唯一实例,放置不同地图页面切换,地图页面和非地图页面来回切换导致内存持续上涨问题。
声明
//对外开放全局变量,获取高德地图唯一实例指针
//由于高德地图只能初始化一次,重复释放后初始化会出现内存不能正常释放的情况,所以使用全局高德地图指针
//由于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];
- 如何让app多个页面只用一个地图实例
- 百度地图:一个页面多个地图,只显示一个地图的解决办法
- 如何让一个APP从上千万个APP中脱颖而出
- 如何让一个APP启动另一个APP
- 只用一个click绑定多个div示例
- AngularJs一个页面多个ng-app的问题
- 如何让页面同时下载多个文件的尝试
- 百度地图JavaScript API如何在同一页面显示多个地图?
- 如何只用一个大小为10的数组或列表来排序1000个随机整数?
- C#中如何让一个函数返回多个
- 如何让一个变量存储多个不同的状态
- discuz如何让一个邮箱注册多个用户名?
- 如何让应用程序只有一个实例运行
- 如何让应用程序只启动一个实例
- 如何让Qt应用程序只有一个实例
- 如何让程序只运行一个实例
- 如何让应用程序只有一个实例
- 如何让Qt应用程序只有一个实例
- 常见排序算法小结
- codeforces #307 E. GukiZ and GukiZiana (分块)
- Foundation 心得、笔记
- ArcGIS教程:按掩膜提取 (空间分析)
- POJ ——2386 Lake Counting(DFS)
- 如何让app多个页面只用一个地图实例
- Python+MySQL获取PhishTank的钓鱼网站列表作业笔记
- 挑战“不可能”
- 使用Windows Mobile Device Center进行手机的同步
- Android项目总结之社会化分享
- 硬件架构图,比较实用,收走
- 取消vs2010选中打开的文件自动展开解决方案文件夹
- asp输出变量
- 设计模式