Didupdateuserlocation метод в mapkit для IOS? - PullRequest
0 голосов
/ 02 января 2012

Я пытаюсь дать 5 аннотаций вокруг местоположения пользователя MKMapView ... Я выбираю случайные значения для аннотаций в моем методе didupdateuserlocation ... когда я запускаю свой проект, все 5 аннотаций отображаются в центре земли в одном и том же месте ..показывает в районе моря недалеко от Африки ... кто-нибудь поможет мне поменять место для аннотаций.

- (void)mapView:(MKMapView *)mv didUpdateUserLocation:(MKUserLocation *)userLocation
{
    CLLocationCoordinate2D userCoordinate = userLocation.location.coordinate;
    for(int i = 1; i<=5;i++)

    {
        CGFloat latDelta = rand()*.035;       ///RAND_MAX -5.0;
        NSLog(@"%f",latDelta);
        CGFloat longDelta = rand()*.03;       ///RAND_MAX -5.0;
        NSLog(@"%f",longDelta);
        CLLocationCoordinate2D newCoord = { userCoordinate.latitude + latDelta, userCoordinate.longitude + longDelta };
        MapPoint *mp = [[MapPoint alloc] initWithCoordinate:newCoord title:[NSString stringWithFormat:@"Azam Home %d",i] subTitle:@"Home Sweet Home"];    
        [mv addAnnotation:mp];
    }

}

я напечатал мои случайные значения .. они

2012-01-02 20:27:32.229 ShareImg[749:15803] 588.244995
2012-01-02 20:27:32.230 ShareImg[749:15803] 8474257.000000
2012-01-02 20:27:32.231 ShareImg[749:15803] 56792752.000000
2012-01-02 20:27:32.231 ShareImg[749:15803] 29548310.000000
2012-01-02 20:27:32.231 ShareImg[749:15803] 40043812.000000
2012-01-02 20:27:32.231 ShareImg[749:15803] 14106338.000000
2012-01-02 20:27:32.231 ShareImg[749:15803] 3535964.000000
2012-01-02 20:27:32.232 ShareImg[749:15803] 43735528.000000
2012-01-02 20:27:32.232 ShareImg[749:15803] 51057228.000000
2012-01-02 20:27:32.232 ShareImg[749:15803] 60217132.000000

помоги мне с этим ...

Ответы [ 2 ]

2 голосов
/ 02 января 2012

CLLocationCoordinate2D является структурой двух степеней CLLocationDegrees.CLLocationDegrees - это двойное число, представляющее положение в градусах
Из документации :

latitude
The latitude in degrees. Positive values indicate latitudes north of the equator. Negative values indicate latitudes south of the equator.
longitude
The longitude in degrees. Measurements are relative to the zero meridian, with positive values extending east of the meridian and negative values extending west of the meridian.

Таким образом, широта должна быть от -90 до 90, а долгота должна быть от -180 до 180Ваша случайная позиция слишком велика, и mapkit показывает вам позицию 0, 0, которая находится в Гвинейском заливе.

1 голос
/ 02 января 2012

Может быть, ваши значения для лат и долг недействительны?Попробуйте использовать этот фрагмент

CGFloat latDelta = userCoordinate.latitude+(i*0.000010);
CGFloat longDelta = userCoordinate.longitude+(i*0.000010);

Сгенерированные вами значения кажутся очень странными для широты и долготы!Пример Berlin Cafe Kranzler имеет значения

52.504039 13.330925

...