菜鸟教程小白 发表于 2022-12-12 21:09:16

ios - MapKit 打印注释到 map


                                            <p><p>我正在尝试在 map 上使用 mapKit 在取自 NSArray 的坐标处放置自定义注释。但是,当我运行应用程序时,注释不会出现。我已经使用 NSLog 进行了检查,纬度和经度都存在。</p>

<p>我不确定哪里出了问题。类中有另一种方法可以使用设备位置成功打印注释,不同之处在于此方法我想使用带有 CLLocationCoordinate2D 的自定义位置。</p>

<p>这是 .m 文件中的方法:</p>

<pre><code>#import &#34;MapViewController.h&#34;

@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(@&#34;String %@, %@&#34;, lat, lon);
    NSLog(@&#34;Double %.8f, %.8f&#34;, lat2, lon2);

    CLLocationCoordinate2D position = CLLocationCoordinate2DMake(lat2, lon2);

    MKPointAnnotation *annotation = [ init];
    annotation.coordinate = position;
    annotation.title = @&#34;working&#34;;
    annotation.subtitle = @&#34;working&#34;;

    ;   
}
</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 = @&#34;Where am I?&#34;;
    point.subtitle = @&#34;I&#39;m here!!!&#34;;

    ;
}
</code></pre>

<p>更新 2:这是另一个包含对 <code>place:</code></p> 的调用的类

<pre><code>#import &#34;ViewController.h&#34;
#import &#34;MapViewController.h&#34;
#import &lt;CoreLocation/CoreLocation.h&gt;


@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:@&#34;,&#34;];

    NSLog(@&#34;sendCo: %@&#34;, sendCo);

    NSURL *url = ;
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                         cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                       timeoutInterval:60.0];
    ;

    ;

    ];

    NSData *urlData;
    NSURLResponse *response;
    NSError *error;

    urlData = [NSURLConnection sendSynchronousRequest:request
                                    returningResponse:&amp;response
                                                error:&amp;error];

    tweet = [ initWithData:urlData encoding:NSUTF8StringEncoding];

    NSArray *jsonData =
                                                      options:0 error:NULL];


    NSLog(@&#34;%@&#34;, 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 &lt;MKAnnotation&gt;)annotation{
    static NSString* PinReuseIdentifier = @&#34;YourReuseIdentifier&#34;;
    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]
查看完整版本: ios - MapKit 打印注释到 map