2012-04-16 60 views
2

我的iPad應用程序正在從數據庫中檢索地理對象。在這個數據庫中,一些對象具有相同的經度/緯度。 作爲MkMapView的一個結果,我添加了幾個具有相同緯度/長度的MKPinAnnotation。不幸的是只有一個顯示,我想它是我添加的最後一個。如何使用相同的緯度/經度顯示多個MKPinAnnotation?

如何只有一個MKPinAnnotation對象(對於給定的座標),當用戶單擊它時,我將顯示MKPinAnnotation爲每個共享相同座標的對象?類似於Google地圖/ Google地球所做的操作,您可以點擊主要Pin,然後顯示幾個Pin。

任何幫助將不勝感激。

Sébastien。

回答

4

您是否認爲當多個引腳處於完全相同的座標時,多個引腳在彼此頂部顯示?或者蘋果是否有可能在同一座標處剔除額外的引腳?

無論哪種方式,我建議改變座標,以便他們可以被看作是明確分開的。你可以做的是通過使用CLLocation的distanceFromLocation:方法找到彼此非常接近的所有引腳。一旦你發現有些引腳距離很近(比如< 0.01),那麼你可以在將它們添加到地圖之前修改它們的座標。您可以使它們圍繞實際的精確座標形成一個小圓圈,圓圈周圍的角度取決於該簇中的多少個(例如4個針腳,將它們置於0,90,180,270度)。或者,您可以只改變緯度,只是非常小的量,以便引腳看起來在垂直線上相互堆疊。

當用戶點擊單獨的引腳時,您也可以做這種分離。即對於該引腳,檢查是否有其他引腳非常接近。如果有,請刪除此引腳(或可能刪除所有這些引腳),計算圓圈或垂直線中所有引腳的新位置,然後重新將引腳添加到地圖(並根據需要打開任何標註視圖)。

一旦銷子以這種方式分開,用戶就很容易點擊各個銷子。

我不完全確定Google地圖/ Google地球是如何處理這個問題的 - 您能描述一下還是提供屏幕截圖?或者提及一些會導致它發生的搜索條件。但希望以上的想法會給你一些嘗試。

+0

你的想法很好,它可以應用於我的問題,尤其是圓。謝謝! – sebastien 2012-04-16 14:27:25

1

您可以簡單地將它們組合到一個annotationView,當用戶觸摸它時,在該annotationView內部製作一些花哨的動畫以呈現內容。

我已經在MKMapView上建立了一個有用的控件,用於聚集附近的引腳(也適用於具有相同座標的引腳),因爲我幾次遇到同樣的問題。它被稱爲OCMapView。它可以結合你的註釋,但你必須自己實現用戶觸摸動畫的東西。

相關問題