iphone - 将静态谷歌地图加载到 UIImageView 中?

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

我正在尝试在我的应用程序中显示一个小型静态谷歌地图。我想知道是否可以使用 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 是正确的,因为如果我直接将其加载到浏览器中,它会显示得很好。

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

谢谢。

最佳答案

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

首先,我将加载图像的方式更改为使用 NSURLConnection。我不认为这个特殊的改变有什么影响,但这就是让我发现问题的原因。当尝试加载 URL 时,我收到“错误的 url”错误。因此我对此进行了一些搜索,结果发现 google 静态 map 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 实现测试了它,它工作得很好。我认为上面的代码也能正常工作,因为这只是转义字符串的问题。

关于iphone - 将静态谷歌地图加载到 UIImageView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2913573/

相关文章:

javascript - 如何让Gmaps.js在动态标记javascript之间绘制路线?

iphone - 屏幕动画未录制

iphone - 在与创建它的文件不同的文件中使用 NSString

iphone - 有没有办法确定何时在UITextField中输入语音文本?

iPhone : how can i move to front page in navigation Controller?

ios - 最近可用的街景 Google Maps SDK iOS

android - Google Places API 自动完成仅获取城市列表

ios - 如何将渐变颜色设置为UIImageView边框

xcode - 按编号搜索并使用ABAddressBook获取图像

java - 在 iOS 上信任我自己的 CA