2010-05-26 73 views
3

我想在我的應用程序中顯示一個小的靜態谷歌地圖。我想知道是否有可能使用UIImageView來做到這一點?它似乎沒有爲我工作,但也許我做錯了什麼。加載靜態谷歌地圖到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,然後加載精細。此外,我知道谷歌地圖的網址是正確的,因爲如果我直接加載到瀏覽器它顯示正常。

我開始認爲這可能是不可能的。如果有人有任何想法或選擇,請分享。

謝謝。

回答

4

那麼我最終找到了解決方案,所以我會張貼它,以防其他人遇到同樣的問題。

首先我改變了我加載圖像的方式,使用NSURLConnection。我不認爲這種特殊的改變會有所作爲,但這是我能夠找到問題的原因。當試圖加載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實現,它完美的工作。我認爲它與上面的代碼一起工作良好,因爲它只是轉義字符串的問題。