Pois의 포이 스타일 체인지 방법 질의

[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.

addpois로 생성한 포이들의 스타일 체인지를 하려고 하는데 포이를 정상적으로 가져오지 못하고 있습니다 아래는 코드입니다
지도 상에서 poi를 선택 시 poi의 스타일이 nonadded에서 added가 되었으면 좋겠습니다. 감사합니다

func poiTappedHandlerAdded(_ param: PoiInteractionEventParam) {
homeViewModel.CardViewIsShowing.toggle()

        print( "poi tapped \(homeViewModel.CardViewIsShowing)")
        print("KakaoMapView's HomeViewModel address: \(Unmanaged.passUnretained(homeViewModel).toOpaque())")
        let view = controller?.getView("mapview") as! KakaoMap
        let manager = view.getLabelManager()
        let layer = manager.getLabelLayer(layerID: "PoiLayer")
        if let poi = layer?.getPoi(poiID: "poi1") {
            poi.changeStyle(styleID: "Added")
            print("poi getted")
        } else {
            print("no poi getted")
        }
        // param.poiItem.hide()
    }
    
    
    //포이 생성
    func createPois(){
        print("createPois")
        let view = controller?.getView("mapview") as! KakaoMap
        let manager = view .getLabelManager()
        let layer = manager.getLabelLayer(layerID: "PoiLayer")
        layer?.visible = true
        
        let poiOption1 = PoiOptions(styleID: "nonAdded", poiID: "poi1")
        poiOption1.rank = 0
        poiOption1.clickable = true
        let poiOption2 = PoiOptions(styleID: "Added", poiID: "poi2")
        poiOption2.rank = 0
        poiOption2.clickable = true
        let poiOptionMyPos = PoiOptions(styleID: "userPosition", poiID: "poiMyPos")
        poiOption2.rank = 0
        poiOption2.clickable = false
        
        var poiMyPos = layer?.addPoi(option:poiOptionMyPos, at: MapPoint(longitude: locationManager.lon ?? 126.978365,latitude: locationManager.lat ?? 37.566691))
        
        
        var pois = layer?.addPois(option: poiOption1, at: mapPoints)
        layer?.showAllPois()
        guard let pois = pois else { return }
        for poi in pois {
            // 여기에서 poi 사용
            let _ = poi.addPoiTappedEventHandler(target: self, handler: KakaoMapCoordinator.poiTappedHandlerAdded(_:))
        }
        
    }

@roll0517
addPois 함수에 option을 한개만 주시는 경우, 동일한 옵션으로 복수 개의 Poi를 생성하려는 것으로 간주합니다. Poi의 ID는 중복될 수 없기 때문에 option에 지정된 id 는 무시되고 내부적으로 POI의 ID를 자동 생성합니다. ID를 지정하시려면 추가하려는 개수만큼 PoiOptions 를 배열로 넘기시거나 개별로 생성하셔야 합니다.

1개의 좋아요

잘 이해가 되지 않습니다. 이해한 바로는 addPois로 생성 시에 옵션을 하나만 설정해서 포이 아이디가 무시되고 자동 생성된 포이아이디로 처리되었고 이 때문에 포이 아이디를 "poi1"으로 설정한 경우 올바르게 호출하지 못하는 것 같습니다.
제가 콘솔에 찍어본 바로는 자동 생성된 포이 아이디는 apgPoiLayer24 이러한 식으로 만들어 지는 것 같습니다.
이에 아래와 같이 변경을 했습니다만. 여전히 스타일 체인지가 이루어 지지 않습니다. 제 이해가 맞는지 확인 부탁드리고 해결책을 주실 수 있으면 감사드리겠습니다. 오늘 하루도 좋은 하루 되시길 바라겠습니다!
func poiTappedHandlerAdded(_ param: PoiInteractionEventParam) {
homeViewModel.CardViewIsShowing.toggle()

        param.poiItem.changeStyle(styleID: "Selected", enableTransition: true)

}

@roll0517
eventHandler가 정상적으로 추가되었는지, 스타일이 잘 생성되었는지 등을 확인해 보셔야 할 것 같습니다.

1개의 좋아요