BLOGakisuteが主に技術的なネタを書き溜めるブログです。利用する地図の提供元を変更したい場合には、tileSourceプロパティを変更する。前回の記事ではroute-meライブラリのRMMapViewクラスを調査して、地図の初期表示座標やズーム倍率を設定する方法を調べてみました。今回はroute-meライブラリのうち、地図の実体そのものを表現するRMMapContentsクラスを調査してみようと思います。RMMapContents.hを読んでみます。利用できるプロパティとメソッドの一覧はこんな感じです。tilesUpdatedRegion:(CGRect)region;長い!長いです!RMMapContentsクラス独自のメソッドだけではなくて、RMMapViewクラスが持っている機能と同じ、地図の表示位置を動かしたり、拡大倍率を操作するメソッドも持っています。self];}どうやらRMMapViewクラスのメソッドの実装は、デリゲートのメソッドの呼び出しに加えて、RMMapContentsクラスのメソッドを呼び出しているだけみたいですね。利用できるプロパティとメソッドがありますが、今回はその中でも「利用する地図の提供元を制御する」方法を調べてみようと思います。RMMapViewの標準の地図提供元はOpenStreetViewです。http://www.openstreetmap.org/OpenStreetViewとは一般のユーザーがGPSを利用して測定した道などの地理情報を自由にアップロードして作るオープンソースな地図プロジェクトです。日本ではまだそれほど定着していないようで、ちょっと田舎に入ると地図の精度が絶望的なことになってきます。いうことで、地図の提供元をOpenStreetViewから別の提供元に変更する必要があります。http://maps.cloudmade.com/)の地図を利用することができます。Sourceグループ内のクラスを指定してやるだけです。VirtualEarthを利用するときは、以下のようにします。autorelease];これを実行すると以下のようになります。見事VirtualEarthになりました。これで日本地図を拡大しても安心です。既存のロード済みのタイルに関しては変更前のtileSourceからロードされてキャッシュされている画像がそのまま表示されてしまいます。従って、以下のような実装ができません。最初からOpenStreetMap以外の地図提供元を利用した実装ができない。RMMapViewのinitと同時に最初の地図情報がOpenStreetMapからロードされてしまうため。あとからユーザーの操作に応じて地図の提供元を変更するような実装ができない。この問題はroute-meプロジェクトのバグトラッカーにも掲載されています。http://code.google.com/p/route-me/issues/detail?id=12#c5現在のところは残念ながら改善されていないようです。今のところは、以下のような対応を心がけましょう。途中で地図の提供元を変更する場合には、動的に画像キャッシュをクリアする。簡単にキャッシュをクリアできるような構造になってはいない。最初からOpenStreetMap以外の地図提供元を利用するときには、ダウンロードしてきたMapViewプロジェクトのソース自体を直接修正する。具体的にはRMMapContents.mの56行目の、以下の箇所を書き換えることで実現できます。Androidアプリエンジニアやってます。原因を調べるのにずいぶんと苦戦したので備忘録を作ります。調べたのですが、これよりよくまとまっているドキュメントを現状発見できませんでしたので、2019/06/08現在では上記のドキュメントを参照するのがベストだと思います。操作が優れているか否か」を評価点に挙げます。今回の記事は久しぶりの誰得記事です。こちらで紹介されている手法を用いるにはプライベートAPIを操作する必要があるため、おそらく審査に通りません。じこせきにんでお願いします。プロパティを使うことで簡単にアニメーションを実装させることができます。サンプルを書いてみます。Accessから秘密鍵を書き出すときに、「エラーが発生しました。項目を読み込めません。Accessのお世話になることが多いです。複数台のMacで開発を行っている場合は、証明書を認証するための秘密鍵を複数台のMacにインストールする必要があります。今年は2019年となりました。12月7日担当のakisuteです。最近フォント周りについて深く掘り下げる機会がありましたので、その際のメモを残しておこうと思います。地点では存在しないタイトルの通りですが一応補足しておきます。