在Mapview上获取错误的注释位置

时间:2013-11-21 13:54:24

标签: iphone objective-c ios7

我在Mapview上获得了错误的注释位置。我尝试了很多东西,但没有运气。 我得到了正确的坐标,但它显示在mapview的错误位置。有谁知道为什么?

  for(WatchEntityLocation *watchEntityLocation in watchEntityLocationList)
    {
        locationArray=watchEntityLocation.locationList;
        NSLog(@"location count:%i",[locationArray count]);
        Location *location=[locationArray objectAtIndex:0];

        NSLog(@"watcher latlong:%g,%g",location.latitude,location.longitude);
        CLLocationCoordinate2D coordinate= CLLocationCoordinate2DMake(location.latitude,location.longitude);

        if (CLLocationCoordinate2DIsValid(coordinate)) {
              NSLog(@"valid Cordinate!");
        } else {
             NSLog(@"Invalid Cordinate!");
        }

        NSLog(@"latitude is::%g" , coordinate.latitude);
        NSLog(@"longitude is: :%g" , coordinate.longitude);

        MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(coordinate, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE);
        MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];

        NSLog(@"adjustedRegion latitude is::%g" , adjustedRegion.center.latitude);
        NSLog(@"adjustedRegion longitude is: :%g" ,adjustedRegion.center.longitude);

        if ((adjustedRegion.center.latitude >= -90) && (adjustedRegion.center.latitude <= 90) && (adjustedRegion.center.longitude >= -180) && (adjustedRegion.center.longitude <= 180)){
            NSLog(@"valid region!");
             [mapView setRegion:adjustedRegion animated:YES];
              mapView.showsUserLocation = NO;
        }else{
             NSLog(@"Invalid region!");
        }
        [self addAnnotation:adjustedRegion.center tlocation:watchEntityLocation.watchEntity.name];}

-(void)addAnnotation:(CLLocationCoordinate2D)lcordinate tlocation:(NSString *)name
{
    MyAnnotation *annotation =
    [[MyAnnotation alloc] initWithCoordinates:lcordinate
                                        title:name
                                     subTitle:@""];

    annotation.pinColor = MKPinAnnotationColorGreen;
    [mapView addAnnotation:annotation];
    [annotationArray addObject:annotation];
}

    - (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
    {
    for (MKAnnotationView *av in views) {
        id <MKAnnotation> mp = [av annotation];
        if (![mp isKindOfClass:[MKUserLocation class]])
        {
            [mv selectAnnotation:mp animated:YES];
            break;
        }
    }
    }

    - (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id     <MKAnnotation>)annotation
      {
      if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    if(annotation != map.userLocation)
    {
        MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MyPin"];
        annView.animatesDrop=TRUE;
        annView.canShowCallout = YES;
        [annView setSelected:YES];
        annView.pinColor = MKPinAnnotationColorRed;
        annView.calloutOffset = CGPointMake(15, 15);
        return annView;
    }

1 个答案:

答案 0 :(得分:0)

我想检查你的lat-long数据类型及其值。