首页 文章

如何通过iPhone应用程序中的代码获取用户的当前位置?

提问于
浏览
1

我想在我的应用中获取用户's current location from my iPhone app. I want to show the user'的当前位置,例如国家/地区名称,纬度,经度信息 . 而且我也希望在谷歌 Map 中显示位置 . 我也试过谷歌搜索,但无法得到确切的答案 . 我在我的应用程序中获取了使用 CLLocationManager 来跟踪位置的信息 . 我该如何使用它?我从Apple Documents下载了一个示例应用程序 . 这是链接:https://developer.apple.com/library/ios/#samplecode/LocateMe/Introduction/Intro.html

你能帮帮我吗?提前致谢 .

4 回答

  • 1

    1)我在我的应用程序中获取了使用 CLLocationManager 的信息来跟踪位置 . 我该如何使用它?

    在.h文件中

    #include <CoreLocation/CLLocationManagerDelegate.h>
    #include <CoreLocation/CLError.h>
    #include <CoreLocation/CLLocation.h>
    #include <CoreLocation/CLLocationManager.h>
    
    CLLocationManager   * myLocationManager;
    
    CLLocation          * myLocation;
    

    在.m文件中: -

    -(void)findMyCurrentLocation
        {           
    
        self.myLocationManager = [[[CLLocationManager alloc] init] autorelease];
        [[self myLocationManager] setDelegate:self ];
        [myLocationManager startUpdatingLocation];
    
        double latitude=34.052234;
        double longitude=-118.243685;
    
        CLLocation *defaultLocation =[[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
        [self setMyLocation:defaultLocation];
        [defaultLocation release];
    
        if( [CLLocationManager locationServicesEnabled] )
        {   
            NSLog(@"Location Services Enabled....");
            locationServicesEnabled=TRUE;
            UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Information" 
                                                             message:@"Fetching your current location." 
                                                            delegate:self 
                                                   cancelButtonTitle:@"OK" 
                                                   otherButtonTitles:nil ];
            [alert release];
        }
        else
        {   
            NSLog( @"Location Services Are Not Enabled...." );
            locationServicesEnabled=FALSE;
            UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Information" 
                                                             message:@"Location service is not enable. Please enable it from settings." 
                                                            delegate:self 
                                                   cancelButtonTitle:@"OK" 
                                                   otherButtonTitles:nil ];
            [alert release];
         }
    
            }
    
        - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation: (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
        {
          [self setMyLocation:newLocation];
    
        NSString *tempLat = [ NSString stringWithFormat:@"%3.6f" , (newLocation.coordinate.latitude) ];
        NSString *tempLong= [ NSString stringWithFormat:@"%3.6f" , (newLocation.coordinate.longitude)];
    
        appDelegate.curlat = tempLat;
        appDelegate.curlong = tempLong;
       }
    
         - (void)locationManager: (CLLocationManager *)manager didFailWithError: (NSError *)error
         {
        printf("\nerror");
        UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Error" 
                                                         message:@"Error while getting your current location." 
                                                        delegate:self 
                                               cancelButtonTitle:@"OK" 
                                               otherButtonTitles:nil ];
    
        [alert release];
         }
    

    2) . 我想在我的应用中显示用户的当前位置,例如国家/地区名称信息 .

    为此您可以使用Google's Reverse Geo codingMKReverseGeocoder

  • 0

    首先创建一个 MKMapView 的实例

    To get user's latitude and longitude

    在你的 viewDidLoad

    [yourMapView setShowsUserLocation:YES];
    
    CLLocationCoordinate2D userCoord;
    
    userCoord.latitude=map_view.userLocation.coordinate.latitude;
    userCoord.longitude=map_view.userLocation.coordinate.longitude;
    
    //NSLogging these on simulator will give you Cupertino or whatever location you set in location simulation.
    

    And for country name 您将需要反向编码,您可以在这里查看类引用

    https://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKReverseGeocoder_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40008323

    OR

    如果MKReverseGeoCoding太复杂,你可以使用雅虎的反向编码器

    http://where.yahooapis.com/geocode?q=%f,%f&gflags=R&appid=yourAppId,那些2%f将是 userCoord.longitudeuserCoord.latitude .

  • 0

    是的,您可以使用CLGeoCoder . 但CLGeaCoder不会为印度等其他国家提供美国境外的累积地点信息 . 因此,最好使用谷歌的反向地理编码SVGeoCoder . SVGeoCoder具有很好的实现,可以通过goolePlaceAPI获取位置 .

相关问题