2012-03-12 16 views
0

こんにちは、maps.googleapis.comから画像を取得しようとしています。以下は、私のコードが何らかの理由で私のURLがNilとして戻ってきていることです。何か間違っているのですか?URLからのUIImage(Googleマップ)

NString *imageSourceString = @"https://maps.googleapis.com/maps/api/staticmap? markers=%2212547%20Hardy%20St,Overland%20Park,Kansas%22&zoom=14&size=576x640&maptype=hybrid& sensor=false"; 

UIImage* finalBitmap = [UIImage imageNamed:imageSourceString]; 

if(nil == finalBitmap) 
{ 
    // Next, try resolving the image using the string as the file name 
    finalBitmap = [UIImage imageWithContentsOfFile:imageSourceString]; 

    if(nil == finalBitmap) 
    { 
     // Next, try resolving the string as a URL. 

     NSURL* url = [NSURL URLWithString:imageSourceString]; 
     if(nil != url) //url is nil at this point 
     { 
      NSData* data = [NSData dataWithContentsOfURL:url]; 
      if(nil != data) 
      { 
       finalBitmap = [UIImage imageWithData:data]; 
      } 
      else 
      { 
       finalBitmap = nil; 
      } 
     } 
     else 
     { 
      finalBitmap = nil; 
     } 

    } 
} 
+0

あなたの 'imageSourceString'にこれらのスペースがあることを意味していますか? – jonkroll

答えて

2

実際のコードにすることはできません。コンパイルすることさえできません。本物を貼り付けてください。

まず、NStringではなくNSStringです。

第2に、imageSourceStringのimageWithContentsOfFileは、ファイル名ではなくURLを指定したので失敗します。あなたはそれにファイルURLを与えることができますが、ここで起こっていることではありません。

第3に、実際のアプリケーションではdataWithContentsOfURLを使用しないでください。つまり、もう一方のサーバーの速度が遅すぎるとUIがフリーズし、アプリがクラッシュする可能性があります。非同期ネットワーキングを使用します。このトピックに関する素晴らしいWWDCビデオシリーズがあります。

2

これは素晴らしい作品:

NSString *stringURL = @"http://www.yoururl.com"; 
NSURL *url = [NSURL URLWithString:stringURL]; 
NSData *imageData = [[NSData alloc] initWithContentsOfURL:url]; 
UIImage *image = [UIImage imageWithData:imageData]; 
[imageData release]; 

あなたの間違いは

UIImage* finalBitmap = [UIImage imageNamed:imageSourceString]; 

は、リモートURLからの画像を得ることができないということですので、この

if(nil == finalBitmap) 

は常にnilを取得します。

サーバーが画像を正しく返すかどうかを確認します。

関連する問題