【发布时间】:2014-05-14 19:34:07
【问题描述】:
我会尽量保持简单:
我对 Objective-C(或者实际上是编程)非常陌生,所以我可能需要的不仅仅是答案。
我正在尝试做和不能做的事情(还): 在点击它的公开后获取一个图钉的坐标,并最终通过一个segue。 实际上,我正在单击我刚刚创建的图钉上的“信息”图标,我想在另一个页面(网络视图)中查看它的信息。此页面将显示坐标(以及我们在这里不需要的其他内容)。
为什么: 实际上,我在用户之前创建的图钉注释上单击“信息”图标,我想在另一个页面(网络视图)中查看它的信息。此页面将显示坐标(以及我们在这里不需要的其他内容)。
我的别针坐标存储在一个
CLLocationCoordinate2D 位置;
我不能重复使用我之前使用的变量,因为它们可能已经过时(只有当用户要求创建最后一个变量时才会起作用......) 而且我不知道如何获得图钉的坐标;必须有一种方法或其他东西,但我找不到它。我在互联网上找到了很多答案,但似乎没有一个有效,可能是因为我没有正确理解它们。无论如何,我无法使用它们。
我会向你展示我的一些代码,我想这很简单:
有 viewDidLoad,我猜你可能想看看:
- (void)viewDidLoad
{
[super viewDidLoad];
name = [[NSString alloc]init];
detail = [[NSString alloc]init];
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longpressToGetLocation:)];
lpgr.minimumPressDuration = 2.0; //user must press for 2 seconds
[_map addGestureRecognizer:lpgr];
CLLocationCoordinate2D loc = CLLocationCoordinate2DMake(50.837863, 4.353616);
MKCoordinateSpan span = MKCoordinateSpanMake(.035, .035);
MKCoordinateRegion reg = MKCoordinateRegionMake(loc, span);
self.map.region = reg;
[self buildBaseAnno];
self.map.showsUserLocation = true;
}
我知道这很重要,但老实说,我并不完全理解这一点是如何工作的;不过,它确实有效。 :D
-(MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
MKAnnotationView* v = nil;
{
static NSString* ident = @"Pin";
v = [_map dequeueReusableAnnotationViewWithIdentifier:ident];
if (v == nil)
{
v = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:ident];
((MKPinAnnotationView*)v).pinColor = MKPinAnnotationColorRed;
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
v.rightCalloutAccessoryView = infoButton;
v.centerOffset= CGPointMake(0,-20);
v.canShowCallout= YES;
}
v.annotation = annotation;
}
return v;
}
触摸图钉创建:
- (void)longpressToGetLocation:(UIGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer.state != UIGestureRecognizerStateBegan)
return;
CGPoint touchPoint = [gestureRecognizer locationInView:self.map];
location = [self.map convertPoint:touchPoint toCoordinateFromView:self.map];
[self showAlertName];
}
实际的注解/图钉创建方法
-(void)buildAnno
{
CLLocationCoordinate2D coordinate;
coordinate.latitude = location.latitude;
coordinate.longitude = location.longitude;
MKPointAnnotation* newann = [MKPointAnnotation new];
newann.coordinate = coordinate;
newann.title = name;
newann.subtitle = detail;
[self.map addAnnotation:newann];
}
请告诉您是否需要更多代码;我不太确定我能给你什么,因为我的代码可能是“正确的”(或体面的),我只需要真正知道如何获取我需要的信息(即,坐标和来自我的 pin 的其他内容)刚刚点击。)
我实际上并没有点击图钉,我点击图钉注释中的披露。无论如何,现在就够了!
一旦我能捕捉到这些坐标,我相信我将能够通过 segue 传递它们,因为传递数据已经在这里得到很好的解释,但如果有什么“特别”,如果你能,我会很高兴将其添加到您的解释中,因为我仍然对这一切感到非常不舒服,而且我发现的大多数教程/指南/链接并没有真正帮助我。
非常感谢您的时间和帮助:)
(编辑:我发现了一个类似的问题here,但我相信我需要额外的帮助/解释。)
【问题讨论】:
标签: ios maps coordinates tap disclosure