userLocationVisble возвращает ошибку - PullRequest
1 голос
/ 06 декабря 2010

У меня есть вид карты, где я обновляю свое текущее местоположение с помощью CoreLocation, но у меня также есть проверки, использующие userLocation.

Я до сих пор не нашел альтернативы в решении моей проблемы, но по какой-то причине я не могуиспользуйте userLocationVisible, чтобы скрыть синюю точку.

Когда я вхожу в MapView, я запускаю locationManager, но перед обновлением своего местоположения появляется синяя точка, и мой пин не отображается.

Я попытался использовать пользовательский MKAnnotation и инициировать координаты с помощью newLocation из DidUpdateToLocation.Но когда я запускаю это, я получаю:

-[CustomPlacemark setCoordinate:]: unrecognized selector sent to instance 0x1de6c0

это мой CustomPlacemark:

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

@interface CustomPlacemark : NSObject<MKAnnotation> {
    CLLocationCoordinate2D coordinate;  
    NSString *title;
    NSString *subtitle;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *subtitle;

-(id)initWithCoordinate:(CLLocationCoordinate2D) coordinate;
- (NSString *)subtitle;
- (NSString *)title;
@end

#import "CustomPlacemark.h"

@implementation CustomPlacemark
@synthesize coordinate;
@synthesize title, subtitle;

-(id)initWithCoordinate:(CLLocationCoordinate2D) c{
    self=[super init];
    if (self!=nil) {
        coordinate=c;
    }
    return self;
}

-(NSString*)title{
    return title;
}

-(NSString*)subtitle{
    return subtitle;
}

-(void) dealloc
{
    [title release]; title = nil;
    [subtitle release]; subtitle = nil;
    [super dealloc];
}
@end

Может кто-нибудь также сказать мне, почему я не могу использовать UserLocationVisible ??

Ответы [ 3 ]

1 голос
/ 06 декабря 2010

Cordinate - это свойство только для чтения для класса пользовательских меток. так что вы не можете установить свойство Cordinate. чтобы задать свойство cordinate, заставьте его читать и писать.

смена строки @property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

К @property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

0 голосов
/ 17 марта 2011

Синяя точка появляется, когда вы устанавливаете ShowUserLocation = YES;Если вы хотите скрыть синюю точку, установите для этого параметра значение NO.В качестве альтернативы вы можете определить, является ли местоположение пользователя видимым на экране, с помощью CoreLocation и активировать showsUserLocation со значением YES.

Кроме того, синяя точка представляет собой специальный класс аннотаций MKUserLocation, который соответствует протоколу MKAnnotation.Если вы отправляете какие-либо сообщения объектам аннотаций вашего собственного класса, вы можете исключить объект аннотации MKUserLocation.

Если вы хотите узнать, как конкретно обращаться с объектами пользовательских аннотаций, не отправляя неправильные сообщения в класс MKUserLocation, дайте мне знать, у меня есть код, который я могу отправить.

0 голосов
/ 17 марта 2011

Правильный способ сделать это будет initWithCoordinate, а не делать свойство readwrite

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...