注册计时器已过期,但客户端仍在注册! - Google地理编码错误

时间:2011-09-15 06:59:38

标签: iphone xcode google-api geocoding latitude-longitude

我正在尝试使用这两行来获取地址输入时的纬度/经度信息。

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", theAddress];

NSString *locationString = [[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]] autorelease];

奇怪的是,有时我得到lat,长信息在5秒内很快,在其他情况下应用程序卡住约5分钟然后它会记录错误,说明“注册计时器已过期,但客户端仍在注册!“

它还将位置信息(即结果字符串wth lat / long info)提供为null。

我尝试了很多次,无法弄清楚是什么让它起作用,什么不起作用。

是否有人在此之前遇到过相同的问题或有任何建议。

由于

1 个答案:

答案 0 :(得分:0)

尝试下面的代码,它与我合作。

CLLocationCoordinate2D coord=[self gettingLatandLonFromAddress:address];

  -(CLLocationCoordinate2D ) gettingLatandLonFromAddress:(NSString *)address
    {
        CLLocationCoordinate2D currentLoc;
        NSString *urlString=[NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv",[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        NSString *locationString=[NSString stringWithContentsOfURL:[NSURL URLWithString:urlString] encoding:NSASCIIStringEncoding error:nil];
        NSArray *listItems = [locationString componentsSeparatedByString:@","];
        double latitude=0.0;
        double longitude=0.0;
        if([listItems count] >=4  && [ [listItems objectAtIndex:0] isEqualToString:@"200"]){
            latitude = [[listItems objectAtIndex:2] doubleValue];
            longitude = [[listItems objectAtIndex:3] doubleValue];
        }
        else{       
            NSLog(@"Error");        
        }

        currentLoc.latitude=latitude;
        currentLoc.longitude=longitude;
        return currentLoc;
    }