2014-01-09 63 views
2

使用MapKit,我可以得到可見的地圖區域,然後計算它內部的註釋數量。但是使用Google Maps,我無法找到任何可供參考的工作示例。首先,我知道GMSVisibleRegion可以是用於此。但無法繼續進行此任何操作..有人做過此任何建議嗎?如何使用Google地圖獲取地圖可見區域中的註釋/標記數量?

這就是我如何使用Mapkit做的。如何使用Google Maps來做到這一點?

NSMutableArray *tempArray=[[NSMutableArray alloc]init]; 
    for (KPAnnotation *annotation in self.mapView.annotations) { 
     if (MKMapRectContainsPoint(self.mapView.visibleMapRect, MKMapPointForCoordinate(annotation.coordinate))) 
     { 

      NSArray *myArray = [annotation.annotations allObjects]; 

      int iCount=[myArray count]; 
      for(int i=0;i<iCount;i++) 
      { 
       Annotation *a=[myArray objectAtIndex:i]; 

       [tempArray addObject:a.name]; 
      } 
     } 
    } 
+0

在MapKit,你不通過這樣的註釋需要循環。您可以調用annotationsInMapRect:方法並將其傳遞給self.mapView.visibleMapRect,它將返回一組可見註釋。 – Anna

+0

嗯....但現在我堅持實施這個使用谷歌地圖 – icodes

+0

對於谷歌地圖,嘗試使用initWithRegion:方法創建一個GMSCoordinateBounds對象,並將它傳遞給GM​​SVisibleRegion。然後調用containsCoordinate:爲每個標記。 – Anna

回答

1

從安娜的意見 - 這應該做的伎倆

- (void)mapView:(GMSMapView *)mapView_ didChangeCameraPosition:(GMSCameraPosition *)position { 
    [NSObject cancelPreviousPerformRequestsWithTarget:self 
              selector:@selector(updateMapResults) object:nil]; 
    [self performSelector:@selector(updateMapResults) withObject:nil afterDelay:0.2]; 
} 

- (void)updateMapResults { 
    GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc]initWithRegion:mapView_.projection.visibleRegion]; 

    int count = 0; 
    for (GMSMarker *marker in markers) { 
     if([bounds containsCoordinate:marker.position]){ 
      count++; // update your label 
     } 
    } 
} 
相關問題