【问题标题】:Load static google map into UIImageView?将静态谷歌地图加载到 UIImageView 中?
【发布时间】:2010-05-26 13:54:25
【问题描述】:

我正在尝试在我的应用中显示一个小的静态谷歌地图。我想知道是否可以使用 UIImageView 做到这一点?它似乎对我不起作用,但也许我做错了什么。

这就是我所拥有的(我删除了 URL,以便于阅读):

NSURL *mapurl = [[NSURL alloc]    initWithString:@"http://maps.google.com/maps/api/staticmap?[...]"]; 
NSData *mapdata = [[NSData alloc] initWithContentsOfURL:mapurl];
UIImage *uimap = [[UIImage alloc] initWithData:mapdata];
self.map.image = uimap; // map is my UIImageView    
[mapurl release];   
[mapdata release];
[uimap release];

我知道我的 UIImageView 设置正确,因为如果我将 URL 替换为一张图片,那么它可以正常加载。我也知道谷歌地图的 URL 是正确的,因为如果我将它直接加载到浏览器中,它会显示得很好。

我开始认为这可能是不可能的。如果有人有任何想法或替代方案,请分享。

谢谢。

【问题讨论】:

    标签: iphone google-maps uiimageview google-static-maps


    【解决方案1】:

    好吧,我最终找到了解决方案,所以我会发布它以防其他人遇到同样的问题。

    首先,我将加载图像的方式更改为使用 NSURLConnection。我不认为这种特殊的变化会产生影响,但这就是让我找到问题的原因。尝试加载 URL 时出现“错误 url”错误。所以我对此进行了一些搜索,结果发现谷歌静态地图 URL 中有一些无效字符必须转义。

    所以基本上只需在 url 上调用它就可以了:

    // The URL you want to load (snipped for readability)
    NSString *mapurl = @"http://maps.google.com/maps/api/staticmap?[...]";  
    
    // Escape the string
    mapurl = [mapurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    我没有使用我在原始帖子中的代码测试此解决方案,但我确实使用我的新 NSURLConnection 实现对其进行了测试,并且它运行良好。我认为它也适用于上面的代码,因为它只是转义字符串的问题。

    【讨论】:

      猜你喜欢
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多