2014-03-14 2 views
1

Google에서 얻을 수있는 위치 배열을 기반으로지도에 마커를 표시해야하는 프로젝트가 있습니다. 우리는 기본값이 아닌 사용자 정의 마커 핀을 사용하고 있습니다. 한 가지 요구 사항은 특정 확대/축소 임계 값을 초과하여 확대하면 마커에 더 큰 아이콘을 표시해야한다는 것입니다. 그래서 우리는 작은 핀 이미지와 큰 핀 이미지를 가지고 있습니다. 확대/축소 수준에 따라 더 크게 또는 더 작게 표시해야합니다. 한 가지 방법은 모든 아이콘을 지우고 다시 추가하는 것입니다. 그러나 다른 도전 과제로 인해, 그 해결책은 우리를 위해 작동하지 않습니다. 간단히 마커 아이콘 이미지를 교체해야합니다.iOS Google지도 SDK 마커 아이콘 바꾸기

-(void)updateMarkerImagePinSize { 
NSLog(@"Update Marker Image called"); 
//[self.mapView clear]; 

UIImage *pinImage; 
AtmLocations *atmLocations = [ATMLocatorManager sharedATMLocatorManager].atmLocations; 
CLLocationCoordinate2D searchedAddressCoordinate = CLLocationCoordinate2DMake(atmLocations.locations.startLatitude, atmLocations.locations.startLongitude); 
[self addSearchLocationMarkerToMap:searchedAddressCoordinate]; 

NSArray *locationArray = atmLocations.locations.location; 

if (locationArray == nil || [locationArray count] == 0){ 
    return; 
} 

for (Location *location in locationArray) { 

    CLLocationCoordinate2D markerCoordinate = CLLocationCoordinate2DMake([[[location attributes] latitude] doubleValue], [[[location attributes] longitude] doubleValue]); 

    GMSMarker *marker = [GMSMarker markerWithPosition:markerCoordinate]; 

    if ([location.attributes.locationType isEqualToString:@"ATM"]) { 


     if (self.mapView.camera.zoom < kZoomThresoldForMarkerImageSizeChange) { 
      pinImage = [UIImage imageNamed:@"atm_pin_small"]; 
     } else { 
      pinImage = [UIImage imageNamed:@"atm_pin"]; 
     } 
    } else { 

     if (self.mapView.camera.zoom < kZoomThresoldForMarkerImageSizeChange) { 
      pinImage = [UIImage imageNamed:@"office_pin_small"]; 
     } else { 
      pinImage = [UIImage imageNamed:@"office_pin"]; 
     } 

    } 


    marker.map = nil; 
    marker.icon = pinImage; 
    marker.map = self.mapView; 

} 

가}

그러나, 내가 직면하고있어 문제가 마커 아이콘 이미지가 모두 남아 있다는 것입니다 : 다음은 내 코드입니다. 마커 이미지를 대체하고 둘 다 표시하지 않으려면 어떻게해야합니까? 나는 markerWithPosition 생성자이며이있는 경우 단순히 그 위치에 마커를 반환하지 놓친

GMSMarker *marker = [GMSMarker markerWithPosition:markerCoordinate]; 

:

답변

1

사실, 문제가 무엇인지 알아 냈어. 그 결과 매번 새로운 마커를 만들어 냈습니다. 마커의 NSMutableArray를 만들고 그 배열을 관리하여 해결했습니다.

관련 문제