Getting Wrong Annotation location on Mapview [closed]

给你一囗甜甜゛ 提交于 2019-12-11 12:22:40

问题


I'm getting the wrong annotation location on Mapview. I have tried so many things, but with no luck. I'm getting the right coordinate but it's displayed at the wrong location on mapview. Does anyone know why?

  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:


I think check your lat-long datatype and its value.



来源:https://stackoverflow.com/questions/20122849/getting-wrong-annotation-location-on-mapview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!