objective-c - 如何在不影响 MKMapView 性能的情况下放置 MKAnnotation
<p><p>我的 map 上有 2800 多个位置。
但是当我把它们放在 map 上时, map 是卡住的。我只能等到所有注释数据都可用。</p>
<pre><code> - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
NSAutoreleasePool *pool_mr = [ init];
NSLog(@"mapView:regionDidChangeAnimated:");
NSLog(@"latitude: %f, longitude: %f", regionsMapView.centerCoordinate.latitude, regionsMapView.centerCoordinate.longitude);
NSLog(@"latitudeDelta: %f, longitudeDelta: %f", regionsMapView.region.span.latitudeDelta, regionsMapView.region.span.longitudeDelta);
if (regionsMapView.region.span.latitudeDelta < 0.007) {
NSLog(@"SHOW ANNOTATIONS");
NSArray *annotations = ;
AddressAnnotation *annotation = nil;
for (int i=0; i<; i++)
{
NSLog(@"%i", i);
annotation = (AddressAnnotation*);
[ setHidden:NO];
}
}else {
NSLog(@"HIDE ANNOTATIONS");
NSArray *annotations = ;
AddressAnnotation *annotation = nil;
for (int i=0; i<; i++)
{
NSLog(@"%i", i);
annotation = (AddressAnnotation*);
[ setHidden:YES];
}
}
;
}
</code></pre>
<p>另一种方法如下:</p>
<pre><code>- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation, AddressAnnotation>) annotation {
//NSAutoreleasePool *pool5 = [ init];
// if it's the user location, just return nil.
if (]){
NSLog(@"MKUserLocation");
return nil;
}
else {
NSLog(@"mapView:viewForAnnotation>>>");
NSLog(@"%@", );
NSLog(@"image: %@", ]);
MKPinAnnotationView *annView=[[ initWithAnnotation:annotation reuseIdentifier:] autorelease];
//annView.pinColor = MKPinAnnotationColorPurple;
UIImage *annotationImage = []] autorelease];
annView.image = annotationImage;
annView.animatesDrop = NO;
annView.canShowCallout = YES;
//annView.draggable = NO;
//annView.highlighted = NO;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}
//;
NSLog(@"<<<mapView:viewForAnnotation");
return nil;
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>有了这么多注释,我会将它们聚集在一起,以便在放大时获得更多细节。我用这种方式在 map 上放了几千 block ,效果很好。如果你搜索它,有很多关于 map 针聚类的信息。</p>
<p>这里有一个 <a href="http://getsuperpin.com/" rel="noreferrer noopener nofollow">commercial option</a>例如(没有连接,没有使用过),但是如果你环顾四周,你会看到很多关于如何自己实现它的信息。</p></p>
<p style="font-size: 20px;">关于objective-c - 如何在不影响 MKMapView 性能的情况下放置 MKAnnotation,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/6570729/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/6570729/
</a>
</p>
页:
[1]