본문 바로가기
iOS/iOS

네이버 지도 API

by 패쓰킴 2023. 2. 15.
728x90
* 주의 사항
네이버 지도 API 사용시 메모리 해제가 되지 않는 문제가 있으니 주의 필요!

 

마커 위 정보창 

기본

NMFInfoWindow *infoWindow = [NMFInfoWindow new];
NMFInfoWindowDefaultTextSource *dataSource = [NMFInfoWindowDefaultTextSource dataSource];
infoWindow.dataSource = dataSource;

// 내가 생성해둔 마커 사용
NMFMarker * marker = [NMFMarker new];

if (marker.infoWindow == nil) {
  // infoWindow를 marker에 넣어 open
  [infoWindow openWithMarker:marker];
} else {
  // infoWindow 닫아줌
  [marker.infoWindow close];
}

 

커스텀 정보창

1. 원하는 UI의 정보창 CustomInfoWindowView.xib 생성

2. 커스텀 정보창 그리기

// CustomInfoWindowView.h
@interface CustomInfoWindowView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *img;
@property (weak, nonatomic) IBOutlet UILabel *textLb;

@end


@interface CustomInfoWindowDataSource : NSObject <NMFOverlayImageDataSource>

@end

// CustomInfoWindowView.m ---------------------------------------------
@implementation CustomInfoWindowView

@end


@implementation CustomInfoWindowDataSource {
    CustomInfoWindowView *rootView;
}

- (UIView *)viewWithOverlay:(NMFOverlay *)overlay {
    NMFInfoWindow * infoWindow = overlay;
    if (rootView == nil) {
        rootView = [[[NSBundle mainBundle] loadNibNamed:@"CustomInfoWindowView" owner:self options:nil] firstObject];
    }
    
    rootView.textLb.text = [infoWindow.marker.userInfo objectForKey:@"title"];
    [rootView.textLb sizeToFit];
    [rootView setFrame:CGRectMake(0, 0, rootView.frame.size.width, rootView.frame.size.height)];
    [rootView layoutIfNeeded];
    return rootView;
}

@end

3. 사용

// marker와 infoWindow는 하나의 세트!!
// 즉, marker를 세팅할 때 infoWindow의 데이터도 infoWindow의 view가 그려지기 전에 세팅이 되어야 한다.!!!
NMFInfoWindow *infoWindow = [NMFInfoWindow new];
CustomInfoWindowDataSource *dataSource = [CustomInfoWindowDataSource new];
infoWindow.dataSource = dataSource;

// infoWindow 데이터 세팅
내마커.userInfo = @{@"title":@"정보창 내용"};

if (내마커.infoWindow == nil) {
  //  infoWindow를 marker에 넣어 open
  [infoWindow openWithMarker:내마커];
} else {
  // infoWindow 닫아줌
  [내마커.infoWindow close];
}

 

참고:

https://navermaps.github.io/ios-map-sdk/reference/Protocols/NMFOverlayImageDataSource.html#/c:objc(pl)NMFOverlayImageDataSource(im)viewWithOverlay: 

 

NMFOverlayImageDataSource Protocol Reference

NMFOverlayImageDataSource @protocol NMFOverlayImageDataSource 지도에서 사용할 수 있는 이미지 리소스를 만들기 위한 UIView를 반환할 수 있는 프로토콜. 이 프로토콜을 구현할 경우, 오버레이의 상태에 따라서 U

navermaps.github.io

https://navermaps.github.io/ios-map-sdk/guide-ko/5-3.html

 

정보 창 · NAVER Map iOS SDK

No results matching ""

navermaps.github.io

https://github.com/navermaps/ios-map-sdk

 

GitHub - navermaps/ios-map-sdk: 네이버 지도 iOS SDK 데모 앱

네이버 지도 iOS SDK 데모 앱. Contribute to navermaps/ios-map-sdk development by creating an account on GitHub.

github.com

 

728x90

'iOS > iOS' 카테고리의 다른 글

애플 리젝  (4) 2023.03.03
UINavigationViewController (with. Coordinator Pattern)  (0) 2023.03.02
keyboard 높이  (1) 2023.02.01
URL Scheme  (0) 2023.01.26
present된 ViewController에 push  (0) 2023.01.26

댓글