Hit*_*esh 5 annotations objective-c mapkit mkmapview ios
我正在使用,MKMapView并已向地图添加了许多注释图钉。所有注释都属于不同的国家,所以我无法将所有注释设置为对用户可见。
请尝试使用以下经度和纬度进行注释。
First annotation Latitude:23.029690
First annotation Longitude: 72.527359
Second annotation Latitude:34.210855
Second annotation Longitude: -118.622636
用于将注释添加到mapview的代码。
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake([[dicObjects valueForKey:K_Latitude] doubleValue], [[dicObjects valueForKey:K_Longitude] doubleValue]);
MyCustomAnnotation *myCustomAnnotation = [[MyCustomAnnotation alloc]initWithTitle:[NSString stringWithFormat:@"%@ ",[dicObjects valueForKey:K_Title]] Subtitle:[NSString stringWithFormat:@"%@",[dicObjects valueForKey:K_SubTitle]] andDescritpion:[NSString stringWithFormat:@"%@",[dicObjects valueForKey:K_TitelDes]] withLocation:coordinate andImageName:[dicObjects valueForKey:K_Rating] andTagValue:intTempCounter];
[mapViewPledgeList addAnnotation:myCustomAnnotation];
Run Code Online (Sandbox Code Playgroud)
MyCustomAnnotation.h
@interface MyCustomAnnotation : NSObject<MKAnnotation>
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (copy, nonatomic) NSString *title;
@property (copy, nonatomic) NSString *subTitle;
@property (copy, nonatomic) NSString *titleDescritpion;
@property (copy, nonatomic) NSString *strImageName;
@property int intTagValue;
- (id)initWithTitle:(NSString *)newTitle Subtitle:(NSString *)subTitle andDescritpion:(NSString *)titleDescritpion withLocation:(CLLocationCoordinate2D)location andTagValue:(int) intTag;
- (MKAnnotationView *)annotationView;
- (id)initWithTitle:(NSString *)newTitle Subtitle:(NSString *)subTitle andDescritpion:(NSString *)titleDescritpion withLocation:(CLLocationCoordinate2D)location andImageName:(NSString*) strImageName andTagValue:(int) intTag;
@end
Run Code Online (Sandbox Code Playgroud)
MyCustomAnnotation.m
#import "MyCustomAnnotation.h"
@implementation MyCustomAnnotation
#pragma mark - Custom Annotation View Setup
- (MKAnnotationView *)annotationView{
MKAnnotationView *annotationView = [[MKAnnotationView alloc]initWithAnnotation:self reuseIdentifier:K_ID_CUSTOM_ANNOTATION];
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
annotationView.image = kImage(_strImageName);
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
button.frame = CGRectMake(0, 0, 23, 23);
button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
[button setImage:[[UIImage imageNamed:@"NextArrow"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
annotationView.rightCalloutAccessoryView = button;
return annotationView;
}
- (id)initWithTitle:(NSString *)newTitle Subtitle:(NSString *)subTitle andDescritpion:(NSString *)titleDescritpion withLocation:(CLLocationCoordinate2D)location andImageName:(NSString*) strImageName andTagValue:(int) intTag{
self = [super init];
if(self){
_title = newTitle;
_subTitle = subTitle;
_titleDescritpion = titleDescritpion;
_coordinate = location;
if ([strImageName intValue] == 1) {
_strImageName = @"MapViewPinRed";
}else if([strImageName intValue] == 2){
_strImageName = @"MapViewPinOrange";
}else if ([strImageName intValue] == 3){
_strImageName = @"MapViewPinYellow";
}else if ([strImageName intValue] == 4){
_strImageName = @"MapViewPinLightGreen";
}else{
_strImageName = @"MapViewPinGreen";
}
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
我尝试下面的解决方案,但无法正常工作。
1)使用 MKMapRectUnion
MKMapRect zoomRect = MKMapRectNull;
for (id <MKAnnotation> annotation in mapViewPledgeList.annotations)
{
MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate);
MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1);
zoomRect = MKMapRectUnion(zoomRect, pointRect);
}
[mapViewPledgeList setVisibleMapRect:zoomRect animated:YES];
Run Code Online (Sandbox Code Playgroud)
2)使用 showAnnotations
[mapViewPledgeList showAnnotations:mapViewPledgeList.annotations animated:YES];
Run Code Online (Sandbox Code Playgroud)
问题:建议任何解决方案,以便所有注释对用户保持可见。
Q] 所有注释对用户都可见。
不幸的是,无法将最小缩放级别设置为小于 MKMapView 最小限制。
另外在苹果官方地图应用中下面的点同时不可见
First annotation Latitude:23.029690
First annotation Longitude:72.527359
Second annotation Latitude:34.210855
Second annotation Longitude:-118.622636
注意:超过最小限制后,我们无法放大地图视图。
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |