gpt4 book ai didi

ios - 在不减慢 UI 的情况下在 UITableViewCell 中显示 MKMapView

转载 作者:可可西里 更新时间:2023-11-01 04:08:53 26 4
gpt4 key购买 nike

我正在尝试将 MKMapView 放在一些 UiTableViewCell 中,但是(在 iPhone 5 上,所以即使在其他设备上),当应用程序用 map 加载单元格时,滚动变得不太平滑。

有一些方法,使用 GCD 或其他东西,以更好的方式做到这一点?

结果截图如下:

enter image description here

我从 Nib 加载 Cell,这是我设置坐标和注释的代码(使用自定义 View ,但这不是问题。)

    // Delegate
cell.objectMap.delegate = self;

// Coordinate
MKCoordinateRegion region;
region.center = activity.object.location.coordinate;
MKCoordinateSpan span;
span.latitudeDelta = 0.055;
span.longitudeDelta = 0.055;
region.span = span;
[cell.objectMap setRegion:region animated:NO];

// Add an annotation
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = activity.object.location.coordinate;
[cell.objectMap addAnnotation:point];

// Show the MKMapView in the cell
cell.objectMap.hidden = NO;

最佳答案

我最终将 MKMapSnapshotter 用于支持这种出色且快速功能的设备,并将 Google Static Maps Api 用于运行 iOS6 的设备。我认为这是我能得到的最好、最快的解决方案。

感谢@Rob征求意见。

if ( IS_IOS7 ) {

// Placeholder
cell.objectImage.image = [UIImage imageNamed:@"mapPlaceholder"];

// Cooridinate
MKCoordinateRegion region;
region.center = activity.object.location.coordinate;
MKCoordinateSpan span;
span.latitudeDelta = 0.055;
span.longitudeDelta = 0.055;
region.span = span;
[self.mapViewForScreenshot setRegion:region animated:NO];

MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
options.region = self.mapViewForScreenshot.region;
options.scale = [UIScreen mainScreen].scale;
options.size = CGSizeMake(300, 168);

MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {

UIImage *image = snapshot.image;
[cell.objectImage setImage:image];
cell.mapPinImageView.hidden = NO;

}];

}else{

cell.mapPinImageView.hidden = NO;
[cell.objectImage setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=14&size=600x338&maptype=roadmap&sensor=false&key=APIKEY",activity.object.location.coordinate.latitude, activity.object.location.coordinate.longitude]] placeholderImage:nil];

}

enter image description here

关于ios - 在不减慢 UI 的情况下在 UITableViewCell 中显示 MKMapView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com