neb*_*ebs 3 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];
Run Code Online (Sandbox Code Playgroud)
我知道我的UIImageView设置正确,因为如果我用一个图像替换URL,那么它加载正常.此外,我知道谷歌地图网址是正确的,因为如果我直接加载到浏览器它显示正常.
我开始认为这可能是不可能的.如果有人有任何想法或替代方案,请分享.
谢谢.
好吧,我最终找到了解决方案,所以我会发布它以防其他人遇到同样的问题.
首先,我改变了使用NSURLConnection加载图像的方式.我不认为这种特殊的变化有所不同,但这是让我找到问题的原因.在尝试加载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];
Run Code Online (Sandbox Code Playgroud)
我没有用我原来的帖子中的代码测试这个解决方案,但是我用新的NSURLConnection实现测试了它,它运行得很好.我假设它也可以正常使用上面的代码,因为它只是逃避字符串的问题.
归档时间: |
|
查看次数: |
2046 次 |
最近记录: |