First allow your map to show your current location.
_mapView.showsUserLocation = YES; // This will show the blue dot on map at your current location.
Now Set the Region to zoom on your current location.
MKCoordinateRegion region;
region.center.latitude = _mapView.userLocation.coordinate.latitude;;
region.center.longitude = _mapView.userLocation.coordinate.longitude;;
region.span.latitudeDelta = 0.001;
region.span.longitudeDelta = 0.001;
MKCoordinateRegion scaledRegion = [_mapView regionThatFits:region];
[_mapView setRegion:scaledRegion animated:NO];
Make Sure to set the Region after your location is visible over map or your map is completly loaded. You can make use to delegates..
- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView;
- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView;
If you want to manage the UserLocation by userself.. You can use CLLocationManager class Initialize it and Use it's Delegate to get the updates on User's Current location.
CLLocationManager *locationManager = [[CLLocationManager alloc]init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = NO;
[locationManager setDelegate:self];
// Delegate
- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
// Use New Location to show your custom marker or do any thing you want.
}
For Debugging in Simulator you set the GPS location Go to Simulator option DEBUG-->LOCATION .. You can add custom location or can chose from the available ones.
Hope this will help you. :)