ios - MapKit 打印注释到 map
<p><p>我正在尝试在 map 上使用 mapKit 在取自 NSArray 的坐标处放置自定义注释。但是,当我运行应用程序时,注释不会出现。我已经使用 NSLog 进行了检查,纬度和经度都存在。</p>
<p>我不确定哪里出了问题。类中有另一种方法可以使用设备位置成功打印注释,不同之处在于此方法我想使用带有 CLLocationCoordinate2D 的自定义位置。</p>
<p>这是 .m 文件中的方法:</p>
<pre><code>#import "MapViewController.h"
@interface MapViewController ()
@end
@implementation MapViewController
@synthesize mapView=_mapView;
- (void)place:(NSArray *)tweetData
{
NSArray *array = tweetData;
NSDictionary *dict = ;
NSString *lat = ;
NSString *lon = ;
double lat2 = ;
double lon2 = ;
NSLog(@"String %@, %@", lat, lon);
NSLog(@"Double %.8f, %.8f", lat2, lon2);
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(lat2, lon2);
MKPointAnnotation *annotation = [ init];
annotation.coordinate = position;
annotation.title = @"working";
annotation.subtitle = @"working";
;
}
</code></pre>
<p>更新:只是为了澄清同一类中的其他方法可以正常工作。我只想使用从数组中获取的不同位置。默认注解就好了,我就是想换个位置。</p>
<pre><code>- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800);
animated:YES];
MKPointAnnotation *point = [ init];
point.coordinate = userLocation.coordinate;
point.title = @"Where am I?";
point.subtitle = @"I'm here!!!";
;
}
</code></pre>
<p>更新 2:这是另一个包含对 <code>place:</code></p> 的调用的类
<pre><code>#import "ViewController.h"
#import "MapViewController.h"
#import <CoreLocation/CoreLocation.h>
@implementation ViewController
@synthesize button=_button;
@synthesize label=_label;
@synthesize tweetId=_tweetId;
@synthesize tweetContent=_tweetContent;
@synthesize connection=_connection;
@synthesize mapView=_mapView;
NSString *tweet;
NSMutableArray *locationArray;
- (IBAction)fetchTweet
{
NSString *sendCo = [ componentsJoinedByString:@","];
NSLog(@"sendCo: %@", sendCo);
NSURL *url = ;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
;
;
];
NSData *urlData;
NSURLResponse *response;
NSError *error;
urlData = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
tweet = [ initWithData:urlData encoding:NSUTF8StringEncoding];
NSArray *jsonData =
options:0 error:NULL];
NSLog(@"%@", jsonData);
_mapView = [ init];
;
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>正如 igor 所说,您应该实现 <em>MKMapViewDelegate</em> 协议(protocol),将您的 Controller 设置为 MKMapView 委托(delegate)并至少实现下一个方法:</p>
<pre><code>-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
static NSString* PinReuseIdentifier = @"YourReuseIdentifier";
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) ;
if (!annotationView){
annotationView = [ initWithAnnotation:annotation reuseIdentifier: PinReuseIdentifier];
}
//Customize annotationView
return annotationView;
}
</code></pre>
<p>并在 <em>MKAnnotationView</em></p> 中提供您的自定义图钉 View </p>
<p style="font-size: 20px;">关于ios - MapKit 打印注释到 map ,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/22747425/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/22747425/
</a>
</p>
页:
[1]