来自URL的UIImage(谷歌地图)

时间:2012-03-12 22:01:25

标签: ios google-maps uiimage

您好我正在尝试从maps.googleapis.com获取图片。以下是我的代码由于某种原因我的网址仍然以Nil的形式返回。难道我做错了什么?

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;
        }

    }
}

2 个答案:

答案 0 :(得分:2)

那不可能是真正的代码,甚至不会编译。粘贴真实的东西。

首先,它是NSString,而不是NString。

其次,imageSourceString上的imageWithContentsOfFile将失败,因为你给它一个URL,而不是文件名。你可以给它一个文件URL,但这不是这里发生的事情。

第三,不要在真实的应用程序中使用dataWithContentsOfURL - 如果另一端的服务器太慢,它将冻结UI并可能使应用程序崩溃。使用异步网络。关于这个主题,有一系列精彩的WWDC视频。

答案 1 :(得分: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];

无法从远程网址获取图片,所以

if( nil == finalBitmap )

将始终为零。

检查服务器是否正确返回图像。