Преобразование HTML в обычный текст для аннотаций MapKit - PullRequest
1 голос
/ 19 сентября 2011

У меня проблема при использовании аннотации для просмотра информации в MapKit.

Ответы [ 3 ]

1 голос
/ 19 октября 2011

Я столкнулся с подобной проблемой.Ты не сумасшедший.Я считаю, что это ошибка в коде MapKit.Объект Annotation не создает свою собственную копию строк, которые вы ему передаете.Когда ваша строка выходит из области видимости, карта становится плохой ссылкой.Попробуйте перераспределить строки, прежде чем передать их.Вот так:

NSString *tempT = [[NSString alloc] initWithString:itemT];
NSString *tempA = [[NSString alloc] initWithString:itemA];
addAnnotation = [[MapAnnotation alloc] initWithCoordinate:essai :tempT :tempA];

И затем не отпускайте их, пока не закончите отображать карту.

1 голос
/ 01 декабря 2011

Я столкнулся с точно такой же проблемой, как упоминал Джонси, но - это исправление.Я не уверен, какой у вас класс для ваших аннотаций, но я использую это:

Annotation.h:

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
#import <UIKit/UIKit.h>

@interface LocationAnnotation : NSObject <MKAnnotation> {
    CLLocationCoordinate2D coordinate;
    NSString* title;
    NSString* subtitle;
}

@property (nonatomic, assign) MKPinAnnotationColor pinColor;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString* title;
@property (nonatomic, copy) NSString* subtitle;

- (id)initWithCoordinate:(CLLocationCoordinate2D) c
                    title:(NSString*) t
                 subtitle:(NSString*) st;

- (void)moveAnnotation:(CLLocationCoordinate2D) newCoordinate;

- (NSString*)subtitle;

- (NSString*)title;

@end

И Annotation.m:

#import "LocationAnnotation.h"

@implementation LocationAnnotation

@synthesize coordinate, pinColor, title, subtitle;

- (NSString *)subtitle {
return subtitle;
}

- (NSString *)title {
    return title;
}

-(id)initWithCoordinate:(CLLocationCoordinate2D) c
                  title:(NSString*)t 
               subtitle:(NSString*)st
{
    coordinate = c;
    self.title = t;
    self.subtitle = st;
    return self;
}

- (void)moveAnnotation:(CLLocationCoordinate2D)newCoordinate
{
    coordinate = newCoordinate;
}

- (void)dealloc
{
    [title release];
    [subtitle release];
    [super dealloc];
}

@end

Чтобы реализовать это:

Annotation* ann = [[[Annotation alloc] initWithCoordinate:startLocation title:someStringAutoreleasedOrNot subtitle:someOtherStringAutoreleasedOrNot] autorelease];
[yourMapView addAnnotation:ann];

Действительно, ключом здесь является то, что в классе аннотаций свойства title и subtitle объявлены как тип copy.Это создаст новую копию строки, которую вы ей назначите, чтобы ее можно было освободить, не вызывая сбоя, который у вас возник.

0 голосов
/ 19 сентября 2011

Я не вижу вызова метода stringByStandardizingWhitespace в приведенном выше коде, который вы вставили ... Было бы полезно, если вы можете опубликовать код с ошибкой. Используйте отладчик, чтобы узнать, где происходит ошибка ...

Также одна ошибка, которая не связана с указанным вами синтаксисом / ошибкой, но повлияет на логику позже:

вы присваиваете тег gps_long tpo lat и наоборот ...

...