18

マップに配置するピンがかなりあるので、それらの注釈をクラスター化するのは良い考えだと思います。iPhoneでこれを実現する方法がよくわかりません.GoogleマップといくつかのJavaScriptの例で何かを解決することができました. しかし、iPhone はその mkmapview を使用しており、そこに注釈をクラスター化する方法がわかりません。

あなたが知っていて、良いアイデアやフレームワークはありますか? ありがとう。

4

9 に答える 9

40

- (NSSet *)annotationsInMapRect:(MKMapRect)mapRectiOS 4.2 以降、MKMapView には、クラスタリングを行うために使用できるメソッドが呼び出されるため、必ずしもサードパーティのフレームワークを使用する必要はありません。

WWDC11 セッション ビデオ「 MapKitを使用して地理的に情報を視覚化する」をご覧ください。半分くらいでやり方が説明されています。しかし、私はあなたのために概念を要約します:

  • 2 つのマップを使用します ( 2 番目のマップがビュー階層に追加されることはありません) 。
  • 2 番目のマップにはすべての注釈が含まれます (これも描画されません) 。
  • マップ エリアを正方形のグリッドに分割する
  • メソッドを使用-annotationsInMapRectして、非表示のマップから注釈データを取得します
  • 可視マップは、不可視マップのこのデータから注釈を作成します

ここに画像の説明を入力

于 2013-03-15T17:19:02.823 に答える
13

これは非常に一般的な問題であり、解決策が必要だったため、クラスタリングをサポートするMKMapViewのカスタムサブクラスを作成しました。それから私はそれをオープンソースで利用できるようにしました!ここで入手できます:https ://github.com/yinkou/OCMapView 。

注釈のクラスタリングを管理し、自分でそれらのビューを処理できます。OCMapViewフォルダをプロジェクトにコピーMKMapViewし、nibにを作成し、そのクラスをに設定する以外に何もする必要はありませんOCMapView。(または、通常のようにコードで作成して委任しますMKMapView

于 2011-10-20T21:23:16.847 に答える
2

ピンをクラスタリングして、その番号を表示したかっただけです。次の https://www.cocoacontrols.com/controls/qtree-objcは私の期待に合っています。

于 2015-06-13T15:42:21.807 に答える
2

ADClusterMapView を見ましたか? https://github.com/applidium/ADClusterMapView

まさにこれを行います。

于 2013-06-07T15:20:10.723 に答える
1

私は最近、別の回答で言及されている ADClusterMapView から分岐し、プロジェクトに関連する問題のすべてではないにしても多くを解決しました。これは kd ツリー アルゴリズムであり、クラスタリングをアニメーション化します。

ここでオープンソースを利用できますhttps://github.com/ashare80/TSClusterMapView

于 2015-01-27T06:19:24.867 に答える
0

ここには、Objective-C と Swift の両方のための非常にクールでよく管理されたライブラリがあります: https://github.com/bigfish24/ABFRealmMapView

Realmとの統合により、クラスタリングが非常にうまく行われ、大量のポイントも処理されます。

于 2015-10-03T00:29:42.427 に答える
0

このフレームワーク (XMapView.framework) を試してください。iOS 8 をサポートするようになりました。

このフレームワークは、現在のプロジェクト構造を変更する必要がなく、MKMapView に直接使用できます。zipファイルがあります。一度に 200 個のピンをクラスター化する例を示します。iPod でテストしたところ、非常にスムーズであることがわかりました。

http://www.xuliu.info/xMapView.html

このライブラリは以下をサポートしています:

  1. 異なるカテゴリのクラスタリング
  2. すべてのカテゴリのクラスタリング
  3. 独自のクラスター半径の設定など
  4. 特定のカテゴリを非表示または表示する
  5. マップ内の各ピンを個別に処理および制御します
于 2015-04-14T03:38:26.980 に答える