将GPS坐标从我的iPhone传递到网络服务,并在地图上显示GPS坐标

时间:2011-07-14 13:14:04

标签: iphone objective-c web-services

我正在尝试创建一个应用程序,该应用程序采用我的iPhone的GPS坐标并在地图上显示我当前的位置。

我使用LocateMe示例代码从我的iPhone获得GPS坐标,所以现在这对我来说不是问题。

但我不知道如何将我的GPS坐标从我的iPhone发送到网络服务,并在地图上显示GPS坐标。如果你们能帮助我解决这个问题,那就太好了。

3 个答案:

答案 0 :(得分:0)

您可能希望如下使用nsurlconnection类(您只需要在NSURLRequest中设置webW服务特定URL的requestWithUrl参数):

-(void)getLocationsFromWebService {
    NSLog(@"in getLocationsFromWebService");


    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE];


    NSURLRequest *theRequest = [NSURLRequest requestWithURL:self.locationsURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:100.0];

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    self.requestType = @"GET";
    if (theConnection) {
        _responseData = [[NSMutableData data] retain ];
    } else {

        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];
    }
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE]; 
    NSLog(@"in mapviewcontroller");
    NSLog(@"Error connecting - %@",[error localizedDescription]);
    [connection release];
    [_responseData release];
}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
    NSInteger statusCode = [HTTPResponse statusCode];

    if (404 == statusCode || 500 == statusCode) {
        //[self.controller setTitle:@"Error Getting Parking Spot ....."];
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];

        [connection cancel];
        NSLog(@"Server Error - %@", [NSHTTPURLResponse localizedStringForStatusCode:statusCode]);
    } else {
        if ([self.requestType isEqualToString:@"GET"])
            [_responseData setLength:0];
    }
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    if ([self.requestType isEqualToString:@"GET"])
        [_responseData appendData:data];
}

-(void) connectionDidFinishLoading:(NSURLConnection *)connection {

    if ([self.requestType isEqualToString:@"GET"]) {
        [self parseLocations:_responseData];
        [_responseData release];
    }
    [connection release];

}

答案 1 :(得分:0)

您无需为了在地图上显示当前位置而创建Web服务。您只需要实现corelocation和Mapkit框架以实现您的功能。正如您所说,您获得了GPS坐标,因此您只需要实施mapkit并将当前位置设置为用户位置。 Map kit会自动执行,因此您无需为此执行任何操作。只需搜索mapkit示例,您就可以开始了。

答案 2 :(得分:0)

哟需要:

使用NRURLRequest将纬度/经度(例如使用POST方法)传递给PHP页面。

创建PHP scipt以读取该参数,然后构建如下位置:   location => NAME,lat => LATITUDE,lon => LONGITUDE 并使用jsonphp方法以json格式构建它。

在iphone中,现在您只需使用NSURLRequest接收此信息并解析json。将解析结果发送到mapkit。