2016-05-05 12 views
1

Ich bin neu bei IOS Ich muss Standard-Standort mit meiner Breiten- und Längengrad zeigen (12.940358, 80.208647). mit Anmerkungsstift.Standard-Standort in Map-Kit in IOS

.h-Datei:

#import <UIKit/UIKit.h> 
#import <CoreLocation/CoreLocation.h> 
#import <MapKit/MapKit.h> 
@interface Map_view : UIViewController<MKMapViewDelegate,CLLocationManagerDelegate>{ 
    CLLocationManager *locationmgr; 
    CLGeocoder *geocode; 
    CLPlacemark *placemark; 

} 
@property(nonatomic,retain)IBOutlet MKMapView *map11; 

.m-Datei:

@synthesize map11; 

ich keine nicht, wo meine geografische Breite und Länge setzen und wie Sie verwenden mir helfen.

Antwort

0

Wenn Sie Ihren Standort mit Ihrem Lat & lange mit Annotation With Name anzeigen möchten.

Verwenden Sie diesen Code.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    mapVW.showsUserLocation = YES; 
    CLLocation *loc = [[CLLocation alloc]initWithLatitude:12.940358 longitude:80.208647]; 

    [mapVW setCenterCoordinate:loc.coordinate animated:YES]; 

    CLGeocoder *ceo = [[CLGeocoder alloc]init]; 
    [ceo reverseGeocodeLocation:loc 
       completionHandler:^(NSArray *placemarks, NSError *error) { 
        CLPlacemark *placemark = [placemarks objectAtIndex:0]; 

        //String to hold address 
       NSString *locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "]; 
       NSString *cityName = placemark.locality; 

        MKPointAnnotation *annotationPoint = [[MKPointAnnotation alloc] init]; 
        annotationPoint.coordinate = CLLocationCoordinate2DMake(12.940358, 80.208647); 
        annotationPoint.title = locatedAt; 

        MKCoordinateRegion region; 

        MKCoordinateSpan span1; 
        span1.latitudeDelta = 0.08; 
        span1.longitudeDelta = 0.08; 
        region.span = span1; 
        region.center = annotationPoint.coordinate; 
        [mapVW setRegion:region animated:TRUE]; 
        [mapVW regionThatFits:region]; 

        [mapVW addAnnotation:annotationPoint]; 
        [mapVW selectAnnotation:annotationPoint animated:NO]; 
       } 
    ]; 

} 
+0

, wenn zwei Breiten- und Längengrade @Kuldeep bedeuten –

0

Für Anwenderzone Zentrierung, können Sie den folgenden Code verwenden:

[mapView setCenterCoordinate:mapView.userLocation.location.coordinate animated:YES]; 

Für auf besonderen Orten Zoomen, sollten Sie untersuchen, wie die Regionen (MKCoordinateRegion) gezählt und arbeiten, zählen Sie Ihre Breiten- und Längenwerte für die Region und zeigt es Anruf mit:

[mapView setRegion:myRegion animated:YES]; 
0

Verwendung dieser Code wird es Ihnen helfen:

- (void)location 
{ 
    _locationManger =[[CLLocationManager alloc]init]; 
    _locationManger.distanceFilter=kCLDistanceFilterNone; 
    _locationManger.desiredAccuracy=kCLLocationAccuracyHundredMeters; 
    [_locationManger startUpdatingLocation]; 

    [map11 setMapType:MKMapTypeStandard]; 
    [map11 setZoomEnabled:YES]; 
    [map11 setScrollEnabled:YES]; 

    MKCoordinateRegion region={ {0.0,0.0 },{0.0,0.0}}; 

    region.center.latitude = 12.940358 ; 
    region.center.longitude = 80.208647; 
    region.span.longitudeDelta = 20.20f; 
    region.span.latitudeDelta = 20.20f; 

    [map11 setRegion:region animated:YES]; 
    [map11 setDelegate:sender]; 

} 

Es wird die gewünschte Position zeigen, wie

enter image description here

+0

obige Code zeigt Fehler Verwendung von nicht deklarierter Bezeichner „Sender“ .wenn ich diese Zeile kommentieren seine zeigt üblichen Kartenseite @Abhinandan Pratap –

+0

Kommentar diese Zeile und nennen es in ViewDidLoad als [self Lage]; –

+0

danke für alle endlich habe ich lösung. –

0

zuerst müssen Sie setzen DELEGATE und Import in Ihrer .h-Datei folgende

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

danach eine Eigenschaft machen

@property(retain, nonatomic) CLLocationManager *locationManager; 

und in ViewDidLoad

mapview.delegate = self; 

und dann können Sie wie belew tun

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800); 
    [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES]; 

    // Add an annotation 
    MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
     point.coordinate = userLocation.coordinate; 
    point.title = @"Where am I?"; 
    point.subtitle = @"I'm here!!!"; 

    [self.mapView addAnnotation:point]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

#pragma mark - to get User Current Location. 
- (void)getUserLocation{ 
    self.locationManager = [[CLLocationManager alloc] init]; 


    self.locationManager.delegate = self; 


#ifdef __IPHONE_8_0 
    if([self getDeviceOSVersion].integerValue >= 8) { 
     // Use one or the other, not both. Depending on what you put in info.plist 
     [self.locationManager requestWhenInUseAuthorization]; 
     [self.locationManager requestAlwaysAuthorization]; 
    } 
#endif 
    [self.locationManager startUpdatingLocation]; 
} 
-(NSString *)getDeviceOSVersion{ 
    return [NSString stringWithFormat:@"%@",[UIDevice currentDevice].systemVersion]; 
} 

#pragma mark - CLLocationManagerDelegate 
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ 
    UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:@"ERROR" message:@"There was an error retrieving your location"preferredStyle:UIAlertControllerStyleAlert ]; 
    UIAlertAction* ok = [UIAlertAction 
         actionWithTitle:@"OK" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          [errorAlert dismissViewControllerAnimated:YES completion:nil]; 

         }]; 
    [errorAlert addAction:ok]; 
    [self presentViewController:errorAlert animated:YES completion:nil]; 
    NSLog(@"Error: %@",error.description); 
} 

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ 
    CLLocation *currentLocation = [locations lastObject]; 
//currentLocation.coordinate.longitude = currentLocation.coordinate.longitude ; 
    // latitude = currentLocation.coordinate.latitude; 

     [self.locationManager stopUpdatingLocation]; 



} 
0

den folgenden Code Versuchen:

CLLocationCoordinate2D zoomLocation; 
zoomLocation.latitude = 39.281516; 
zoomLocation.longitude= -76.580806; 

// 2 
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE); 

// 3 
[_mapView setRegion:viewRegion animated:YES]; 

Dieser Code wird Ihre Region in der Karte gesetzt .. Dann folgen Sie den Anweisungen hinzufügen Anmerkung in Ihre Karte ..

// Add an annotation 
MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
point.coordinate = userLocation.coordinate; // Change coordinate as yours 
point.title = @"Where am I?"; 
point.subtitle = @"I'm here!!!"; 

[self.mapView addAnnotation:point]; 

Hoffe, es hilft ..

012.351.
0

diesen Code in Ihre viewDidLoad hinzufügen

//self.locationManager replace it with your locationmgr 
    self.locationManager = [[CLLocationManager alloc] init]; 
     self.locationManager.delegate = self; 
    #ifdef __IPHONE_8_0 
     if(IS_OS_8_OR_LATER) { 
      // Use one or the other, not both. Depending on what you put in info.plist 
      [self.locationManager requestWhenInUseAuthorization]; 
      [self.locationManager requestAlwaysAuthorization]; 
     } 
    #endif 
     [self.locationManager startUpdatingLocation]; 

     mapView.showsUserLocation = YES; 
     [mapView setMapType:MKMapTypeStandard]; 
     [mapView setZoomEnabled:YES]; 
     [mapView setScrollEnabled:YES]; 

in ViewDidAppear fügen Sie es unter Code

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:YES]; 

    self.locationManager.distanceFilter = kCLDistanceFilterNone; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    [self.locationManager startUpdatingLocation]; 
    NSLog(@"%@", [self deviceLocation]); 


    CLLocationCoordinate2D userLocation = CLLocationCoordinate2DMake(self.locationManager.location.coordinate.latitude, self.locationManager.location.coordinate.longitude); 
    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
    [annotation setCoordinate:userLocation]; 
    [annotation setTitle:@"Your Location"]; 
    [self.mapView addAnnotation:annotation]; 

    //always show the name of annotation 
    [self.mapView selectAnnotation:annotation animated:YES]; 

    //location 1 
    CLLocationCoordinate2D loc1Coord = CLLocationCoordinate2DMake(18.998250, 72.848734);//add your latitude and longitude here 
    MKPointAnnotation *annotation1 = [[MKPointAnnotation alloc] init]; 
    [annotation1 setCoordinate:loc1Coord]; 
    [annotation1 setTitle:@"title"]; 
    [annotation1 setSubtitle:@"subtitle"]; 
    [self.mapView addAnnotation:annotation1]; 

} 

Fügen Sie diese Methoden

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    if ([annotation isKindOfClass:[MKUserLocation class]]) 
     return nil; 

    MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"loc"]; 
    annotationView.canShowCallout = YES; 
    annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

    return annotationView; 
} 

Das ist, können Sie Ihre geografische Breite und Länge in die sehen können map.Lass mich wissen, ob es funktioniert oder nicht?

+0

ya es funktioniert, aber nicht in gezoomt und einige Fehler in if-else in viewdidload Teil für mich @Madhu –

+0

können Sie Ihren Viewdidload-Code veröffentlichen und mir zeigen, wo Sie Fehler bekommen. – Madhu