2

私の iPad アプリは、データベースから地理的オブジェクトを取得しています。このデータベースには、同じ経度/緯度を持つオブジェクトがいくつかあります。結果として、MkMapView に同じ緯度/経度の複数の MKPinAnnotation を追加しています。残念ながら、表示されるのは 1 つだけです。これが最後に追加したものだと思います。

(特定の座標に対して) MKPinAnnotation オブジェクトを 1 つだけ持つにはどうすればよいですか?ユーザーがそれをクリックすると、同じ座標を共有する各オブジェクトの MKPinAnnotation が表示されますか? Google マップや Google Earth と同様に、メインのピンをクリックすると、いくつかのピンが表示されます。

どんな助けでも大歓迎です。

セバスチャン。

4

2 に答える 2

4

まったく同じ座標にあるときに、複数のピンが重なり合って表示されていると思いますか?または、Appleが同じ座標で追加のピンをカリングすることは可能ですか?

いずれにせよ、座標がはっきりと分離しているように見えるように座標を変更することをお勧めします。CLLocationのdistanceFromLocation:メソッドを使用して、互いに非常に近いすべてのピンを見つけることができます。互いにわずかな距離(たとえば<0.01)のピンがあることがわかったら、それらをマップに追加する前に、それらの座標を修正できます。それらを実際の正確な座標の周りに小さな円を形成させることができます。円の周りの角度は、そのクラスター内の数によって決まります(たとえば、4つのピンの場合、0、90、180、270度に配置します)。または、緯度をごくわずかに変更して、ピンが垂直線で互いに積み重なっているように見せることもできます。

ユーザーが個々のピンをタップしたときに、この分離を行うこともできます。つまり、そのピンについて、非常に近いピンが他にないかどうかを確認します。ある場合は、このピンを削除し(または、これらのピンをすべて削除し)、円または垂直線ですべてのピンの新しい位置を計算してから、ピンをマップに再度追加します(必要に応じてコールアウトビューを開きます)。

このようにピンを分離すると、ユーザーは個々のピンを簡単にタップできるようになります。

Googleマップ/GoogleEarthがこの問題にどのように対処しているか正確にはわかりません。説明したり、スクリーンショットを提供したりできますか?または、それを引き起こすいくつかの検索用語に言及します。しかし、うまくいけば、上記のアイデアがあなたに試してみる何かを与えるでしょう。

于 2012-04-16T14:08:47.513 に答える
1

単純にそれらを 1 つannotationViewに結合し、ユーザーがそれに触れると、その中にファンシーなアニメーションを作成しannotationViewてコンテンツを表示することができます。

MKMapView同じ問題が数回発生したため、近くのピン (同じ座標を持つピンも) をクラスター化するための便利なコントロールを作成しました。それはOCMapViewと呼ばれます。注釈を組み合わせることができますが、ユーザーのタッチでアニメーションを独自に実装する必要があります。

于 2012-04-16T14:12:26.673 に答える