3

アプリに小さな静的なグーグルマップを表示しようとしています。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];

URLを画像の1つに置き換えると正常に読み込まれるため、UIImageViewが正しく設定されていることはわかっています。また、グーグルマップのURLが正しいことも知っています。ブラウザに直接ロードすると、正常に表示されるからです。

私はこれが不可能かもしれないと思い始めています。誰かがアイデアや代替案を持っている場合は共有してください。

ありがとう。

4

1 に答える 1

5

さて、私はこれに対する解決策を見つけることになったので、他の誰かが同じ問題に遭遇した場合に備えてそれを投稿します。

まず、画像の読み込み方法をNSURLConnectionを使用するように変更しました。この特定の変更が違いを生むとは思いませんが、これが私が問題を見つけることを可能にしたものです。URLを読み込もうとすると、「不正なURL」エラーが発生しました。だから私はそれを検索したところ、Googleの静的マップの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実装でテストしましたが、完全に機能します。文字列をエスケープするだけなので、上記のコードでも問題なく動作すると思います。

于 2010-06-01T18:37:36.070 に答える