2012-04-16 12 views
2

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

MKPinAnnotationオブジェクトを(指定された座標に対して)1つだけ持つにはどうすればいいですか?ユーザーがそれをクリックすると、同じ座標を共有するオブジェクトごとにMKPinAnnotationが表示されますか? Google Maps/Google Earthで行われているのと同様の方法で、メインのピンをクリックしてから、いくつかのピンが表示されます。

ご協力いただければ幸いです。

セバスチャン。

答えて

4

まったく同じ座標にあるとき、複数のピンが互いの上に表示されていると思いますか?それとも、Appleが追加のピンを同じ座標で追いかける可能性はありますか?

いずれにしても、私は座標が明確に分かれるように変更することをお勧めします。あなたができることは、CLLocationのdistanceFromLocation:メソッドを使って、互いに非常に近いすべてのピンを見つけることです。小さなピン(例えば、< 0.01)があることが分かったら、マップに追加する前にそれらの座標を修正することができます。実際の正確な座標を中心に小さな円を描くことができます。円の周りの角度は、そのクラスターの数によって決まります(たとえば、4つのピンの場合は0,90,180,270度)。または、緯度のみを非常に少量だけ変更して、ピンが互いに縦に積み重なって見えるようにすることもできます。

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

ピンがこのように分離されると、ユーザーは個々のピンをタップするのが容易になります。

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

+0

あなたのアイデアは素晴らしく、私の問題、特にサークルに適用できます。ありがとう! – sebastien

1

annotationViewにそれらを単に組み合わせることができます。ユーザーが触れると、その中に華やかなアニメーションが作成され、annotationViewのコンテンツが表示されます。

MKMapViewの近くのピン(同じ座標のピンも)をクラスタリングするのに便利なコントロールを構築しました。これは同じ問題が2,3回あったからです。それはOCMapViewと呼ばれます。アノテーションを組み合わせることはできますが、ユーザーが自分のタッチでアニメーションを実装する必要があります。

関連する問題