2013-07-11 3 views
2

mapView에 축척을 표시하려고합니다. 위의 코드는 아래로지도보기에 표시되는지도의 영역의 상단과에서 킬로미터의 거리를 기록mapView에 축척 표시

- (void)mapView:(MKMapView *)map regionDidChangeAnimated:(BOOL)animated { 
MKCoordinateSpan span = mapView.region.span; 
NSLog(@" 1 = ~111 km -> %f = ~ %f km ",span.latitudeDelta,span.latitudeDelta*111); 

} 

: 나는 내 mapViewController.m에 다음 코드를 추가있는 this 스레드를 발견 해당 거리가 변경 될 때마다 업데이트됩니다. 다음 논리적 인 단계는 (NSLog에서) 그 정보를 UILabel에 표시하는 것입니다. 나는 단지 this 스레드를 발견했지만, 그것은 나를 위해 작동하지 않습니다. 분명히하기 위해, 나는 그 코드를 내 viewDidLoad 또는 위에서 언급 한 regionDidChangeAnimated 메소드에 입력하려고 할 때 "string"이 정의되어 있지 않다는 오류가 발생합니다. 나는 또한 here 방법을 시도하고, 나는 "%"가 예기치 않은 것을 말하는 것과 같은 결과를 얻었다.

내가 알고 싶은 것은 UILabel에 내 NSLog 출력을 표시하는 방법입니다. 일단 알아 낸 것이 있으면, 화면의 측면에 1 인치 긴 막대를 추가하고 (1 인치 길이의 선 그림) NSLog 출력을 상단에서 하단으로의 수로 나눕니다. mapView의 아래쪽. 그런 다음 UILabel에 그 줄 옆에 km 수를 표시하여 전통적인지도에서 발견되는 비늘과 비슷하게 보일 것입니다. 또한 NSLog가 문맥 정보를 너무 많이 써서 UILabel을 편집해야만합니다 (예 : "2013-07-11 15 : 02 : 20.775 Controller 2.0 [1076 : 907] 1 = ~ 111km -> 15.994178 = ~ 1775.353763km ").

컨트롤러 2.0

당신을 감사합니다 (NSLog RE 혼동을 피하기 위해) 내 응용 프로그램의 이름입니다!

EDIT- KHansenSF의 조언에 따라 문자열을 추가하려고했습니다. 아무것도 바뀌지 않았다. 여기에 내가 무슨 짓을 : 을 .H에 @interface에, 나는} 그런 후

IBOutlet UILabel *scaleLabel; 
NSString *latDistance; 

을 썼다 내가 쓴 :

@property (weak, nonatomic) IBOutlet MKMapView *mapView; 
@property (nonatomic, retain) IBOutlet UILabel *scaleLabel; 
@property (nonatomic, retain) NSString *latDistance; 
- (IBAction) getLatDistance; 

그런 다음하는 .m에서 나는 모든 것을 합성

을 썼다 의 viewDidLoad에서
scaleLabel.text = latDistance; 

- (IBAction) getLatDistance 
{ 
MKCoordinateSpan span = mapView.region.span; 
NSString *latDistance = [NSString stringWithFormat:@" 1 = ~111 km -> %f = ~ %f km ",span.latitudeDelta,span.latitudeDelta*111]; 
} 
viewDidLoad 후

아무것도 바뀌지 않았다. 내가 잘못 선언했거나 정보를 잘못 전달 했음에도 불구하고 나는 곤란하다. 모든 입력을 부탁드립니다.

참고 - GitHub의 MapView에 축척을 추가하기위한 확장자가 this인데 페이지에 방향이없고 읽기 전용이 비어 있습니다. 누구든지 이것을 구현하는 방법을 알고 있습니까? 또는 Android에서 이러한 축척을 만드는 방법에 대해 this 스레드를 찾았습니다. 아마도 이와 같은 파일은 iOS로 포팅 될 수 있습니다 (예 : 이와 같은 도구를 사용). 나는 이것을 더 깊이 조사 할 것이지만 어떤 의견도 감사 할 것이다. 감사!

EDIT- 이제 끝났으니 완성 된 제품의 스크린 샷을보실 수 있습니다. 개인 정보 보호를 위해 머리말에지도 주석과 회사 이름의 내용을 흐리게 표시했습니다. 그것은 아름답게 작동합니다! 당신이 문자열을 만드는 방법
enter image description here

+0

컴파일러 경고 확인 - 당신이 getLatDistance에 latDistance를 초기화해야 should't (즉, getLatDistance의 latDistance 앞에있는 "NSString *"을 제거하십시오.) – wpearse

+0

@wpearse 컴파일러 경고 메시지가 표시되지 않습니다. 나는 당신의 제안에 따라 그것을 바꾸었다. 위에서 언급했는데 viewDidLoad에서 필요한 모든 것을 말하지 않고 있다고 생각합니까? –

답변

2

유사한 문자열을 얻고 싶은 것이 시도 :

- (void)mapView:(MKMapView *)map regionDidChangeAnimated:(BOOL)animated { 

    MKCoordinateSpan span = mapView.region.span; 

    NSString * scaleString = [NSString stringWithFormat:@" 1 = ~111 km -> %f = ~ %f km", span.latitudeDelta, span.latitudeDelta*111]; 

    NSLog(@"%@", scaleString); 
    self.scaleLabel.text = scaleString; 
} 
+0

나는 그것을 시도했지만 UILabel은 비어있다. 또한 위의 IBAction "getLatDistance"에서 단순히 "latDistance"로 NSString * latDistance를 변경해 보았습니다. 어떻게 든 IBAction에 전화해야 할 가능성이 있습니까? 나는 UIButtons를 프로그래밍 할 때 일반적으로 viewDidLoad에 넣고, 버튼의 크기와 물건을 지정하면 [button addTarget : self action : @selector (myAction) forControlEventTouchUpInside];와 같이 씁니다. 아마도 UILabel에 대한 viewDidLoad에서 비슷한 것을 사용해야 할 것입니다. 그러나 컨트롤 이벤트가 무엇인지 모르겠습니다. –

+0

OK, 중단 점 또는 NSLog를 추가하여 getLatDistance 메서드를 호출 할 수 있습니까? 또한, self.scaleLabel.backgroundColor = [UIColor redColor]를 추가하십시오. scaleLabel이 실제로 scaleLabel 변수에 연결되어 있는지 확인하십시오. – wpearse

+0

또한 위의 업데이트 된 코드를 확인하십시오. – wpearse

0

나는 볼 수 없습니다.그러나이 같은이 NSLog

NSString *string = [NSString stringWithFormat:@" 1 = ~111 km -> %f = ~ %f km ",span.latitudeDelta,span.latitudeDelta*111];