Загрузить статическую карту Google в UIImageView? - PullRequest
3 голосов
/ 26 мая 2010

Я пытаюсь показать небольшую статическую карту Google в моем приложении. Мне интересно, если это возможно сделать с помощью 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-адрес Google Maps является правильным, потому что, если я загружаю его прямо в браузер, он отображается нормально.

Я начинаю думать, что это может быть невозможно. Если у кого-то есть идеи или альтернативы, пожалуйста, поделитесь.

Спасибо.

1 Ответ

5 голосов
/ 01 июня 2010

Что ж, в итоге я нашел решение для этого, поэтому я опубликую его на тот случай, если кто-то столкнется с той же проблемой.

Сначала я изменил способ загрузки изображения на использование NSURLConnection. Я не думаю, что это конкретное изменение имеет значение, но именно это позволило мне найти проблему. При попытке загрузить URL я получил сообщение об ошибке «неверный URL». Поэтому я немного поработал над этим и выяснил, что в URL статической карты Google есть недопустимые символы, которые необходимо экранировать.

Так что, по сути, просто позвоните по 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, и она отлично работает. Я предполагаю, что это будет хорошо работать и с кодом выше, так как это всего лишь вопрос экранирования строки.

...