2016-01-09 41 views
0

我在Parse.com上有一個有「GeoPoint」列的類(每個對象都有經度和緯度)。檢查分析重複項(iOS)

我想檢查是否有兩個對象具有相同的GeoPoint。

我已經試過這一點,但它不工作(不具有重複打印對象):

PFQuery *query=[PFQuery queryWithClassName:@"Schools"]; 
query.limit=1000; 
[self.myObjects addObjectsFromArray:[[query findObjects] mutableCopy]]; 

NSMutableArray *geoPoints=[NSMutableArray array]; 
for (PFObject *object in self.myObjects) { 
    [geoPoints addObject:[object objectForKey:@"GeoPoint"]]; 
} 

NSCountedSet *cs=[[NSCountedSet alloc] initWithArray:geoPoints]; 

int num=1; 
for (PFObject *object in cs) { 
    if ([cs countForObject:object]>1) { 
     NSLog(@"%@ %@",[[self.myObjects objectAtIndex:num] objectForKey:@"Name"], [[self.myObjects objectAtIndex:num] objectForKey:@"Address"]); 
     num++; 
    } 
} 

我如何檢查的NSArray複製/解析本身。

謝謝!

+0

你爲什麼想知道重複?你最初如何添加這兩點?爲什麼你沒有云代碼來檢查是否存在隱藏問題? – Wain

+0

@Wain用戶不要將對象添加到Parse(應用程序只是獲取我在高級中準備的數據),因此它需要成爲一次性事件,這就是爲什麼我沒有云代碼。我在每個學校的地圖上顯示標記,並且如果有兩個具有相同geoPoint的學校,則一個標記將位於另一個標記的頂部,因此我想要找到具有相同geoPoint的另一所學校的對象,並稍微移動它到一邊,這將解決我的問題。我需要知道如何找到這些重複。 – Yhper

回答

0

我會採取不同的方法。當您縮放地圖時,相距甚遠的引腳將開始重疊。因此,您應該爲此問題提供一般孤立子(而不是編輯源數據)。

要採取的方法稱爲地圖引腳聚類。每當地圖縮放/引腳更新時,算法會運行以確定哪些引腳靠近在一起並應該分組。這會導致地圖上有一個引腳由多個原始引腳(註釋)支持。選擇該引腳時,您可以顯示所有註釋的信息。

有許多這樣的實現,您可以使用的:mkmapview pin clustering

+0

標記互相隱藏,所以它不是解決方案,底部標記將永遠不可見,因此不幸的是我需要更改數據。 順便說一下,我也需要這個東西來安排我的地圖,GMSMapView有沒有類似的東西? – Yhper