2010-11-22 3 views
2

내가 히트 맵 오버레이 가지고 만드는 방법을 알아내는 데 문제가 :
이 - 포인트의 설정과 correspondig 반복 카운터
- A의 최대 반복 카운터 단일 지점
- 단일 지점에 대한 최소 반복 카운터목표 - C의 포인트 그룹에 대한 히트 맵을 생성하는 방법을

코드 예제가 있으면 감사하겠습니다.

편집
나는에 말할 수있는지도를 보여줍니다있는 UIImage으로 끝낼 필요가 무지개 색 (빨간색 - 뜨거운 -> 블루 추운) 나는이다이

아이디어 :
-
가 -Create 그레이 스케일 이미지의 사본과는 heatmapImage에서 각 화소를 위해 본
을 heatmapImage 호출 (시각적 밀도를 증가 동일한 지점 오버레이)
-draw 작은 계조 구배 일부 알파 각 지점에서 그레이 스케일 이미지를 만들 첵 k 픽셀 그레이 스케일을 생성하고 그것을 열 그라디언트 어레이로부터 적절한 픽셀 컬러로 재현한다.

하지만 코드에 넣는 방법을 모르겠습니다.

+0

당신이 묘사하는 것은 전화에 너무 강렬 할 수 있습니다. 서로의 위에 이미지를 중첩하는 데이터 입력은 무엇입니까? 아이폰의 각 이미지는 960 * 640 * 32 바이트입니다. 픽셀 값을 증가/감소시키는 경우 많은 메모리를 소모합니다. –

답변

1

@ Goz의 답변에 따라 격자를 만드는 데 도움이되는 HTPoint이라는 개체 배열을 만들 수 있습니다.

@interface HTPoint NSObject { 
    int _density; 
} 

enum Range { 
    MaxAccumulator = 100, 
    MinAccumulator = -100 
} 

@property (int) x 
@property (int) y 
@property (int) density 

-(id)initWithPoint:(CGPoint)pt andDensity:(int)d; 

@end 

이미지 용 CGPoint처럼 사용하십시오. 밀도 setter/getter를 재정의하십시오.

@implementation HTPoint 

- (int) density { return _density; } 
- (void) setDensity: (int) density 
{ 
    if (density < MaxAccumulator && density > MinAccumulator) 
     _density = density; 
} 

// Do the same for decr 
- (void) incr 
{ 
    if (_density > MaxAccumulator && _density < MinAccumulator) return; // or throw an exception 
    _density ++; 
} 

@end 

그리드 자체를 추적하는 데 도움이됩니다. 그것을 표시하기 위해 @Goz '대답을 사용하십시오. 그러나'1 '을 추가하는 대신에 단지 밀도를 추가하십시오. HTPoint.

+0

감사합니다. 질문에 편집을 추가했습니다. – Cyprian

+1

@ Cyprian, [NSData 및 UIImage?] (http://stackoverflow.com/q/1281210/266252) 사이의 변환에 대해 잘 알고 있습니까? –

+0

NSData 및 UIImage 링크가 많은 도움이되었습니다. 고맙습니다. – Cyprian

1

음 비교적 쉽습니다.

고정 된 눈금으로 영역을 나눕니다 (예 : 64x64).

이제 모든 지점을 검사하고 어떤 눈금 상자가 떨어지는 지 확인하십시오. 그런 다음 그 격자 상자 카운터에 1을 더하십시오. 이제 밀도 맵이 생겼습니다. 하지만 변환하고 렌더링하십시오.