2014-06-16 6 views
1

나는 청취자를 (setMapSurfaceListener을 통해 SKMapSurfaceListener 개체를 전달하여) 설정 한 SKMapSurfaceView입니다. addAnnotation을 통해 SKMapSurfaceView에 추가 된 특수 효과를 탭하면 청취자는 onSingleTap 이벤트가 발생하지만 onAnnotationSelected은 표시되지 않습니다. 필자는 Skobbler의 로그에서 "맞춤 POI"에 탭이 있음을 확인합니다.이 주석은 내 주석 (특히 내 POI의 고유 ID는 내 주석에 부여한 고유 ID이므로)입니다. 하지만 onAnnotationSelected도 아니고 onCustomPOISelected도 내 수신기에서 호출되지 않습니다. 왜?Android 용 Skobbler SDK : SKMapSurfaceListener.onAnnotationSelected가 호출되지 않습니다.

편집 :

06-22 19:34:27.674: D/SKMaps(20852): MapRenderer----onSurfaceCreated 
06-22 19:34:27.679: D/SKMaps(20852): MapRenderer---- LinInitialized = true 
06-22 19:34:28.394: D/SKMaps(20852): MapRenderer----Map follower mode 0 
06-22 19:34:28.394: D/SKMaps(20852): MapRenderer----onSurfaceChanged width = 1080 height= 1701 
... 
06-22 19:35:11.729: D/SKMaps(20852): SKMapSurfaceView----SINGLE TAP CONFIRMED 0 
06-22 19:35:11.729: D/SKMaps(20852): SKMapSurfaceView----Check north indicator 4 526.0 705.0 296 64 0 64 
06-22 19:35:11.729: D/SKMaps(20852): SKMapSurfaceView----notifyWithMapInfo 
06-22 19:35:11.759: D/Wanderant(20852): onSingleTap 
06-22 19:35:17.399: D/SKMaps(20852): SKMapSurfaceView----SINGLE TAP CONFIRMED 0 
06-22 19:35:17.399: D/SKMaps(20852): SKMapSurfaceView----Check north indicator 4 532.0 720.0 296 64 0 64 
06-22 19:35:17.399: D/SKMaps(20852): SKMapSurfaceView----notifyWithMapInfo 
06-22 19:35:17.429: D/SKMaps(20852): SKMapSurfaceView---- Tapped custom POI id=123456 
06-22 19:35:17.429: D/Wanderant(20852): onSingleTap 

로 : 주석 ON

 SKAnnotation annotation = new SKAnnotation(); 
     annotation.setUniqueID(123456); 
     annotation.setLocation(new SKCoordinate(
       13.45457, 
       52.51592)); 
     annotation.setMininumZoomLevel(15); 
     annotation.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_MARKER); 
     mapView.addAnnotation(annotation); 

     mapView.setMapSurfaceListener(new SKMapSurfaceListener() { 
      @Override 
      public void onSurfaceCreated() { 
      } 

      @Override 
      public void onSingleTap(SKScreenPoint arg0) { 
       Log.d("onSingleTap"); 
      } 

      @Override 
      public void onScreenOrientationChanged() { 
      } 

      @Override 
      public void onRotateMap() { 
      } 

      @Override 
      public void onPOIClusterSelected(SKPOICluster arg0) { 
       Log.d("onPOIClusterSelected"); 
      } 

      @Override 
      public void onMapRegionChanged(SKCoordinate arg0) { 
      } 

      @Override 
      public void onMapPOISelected(SKMapPOI arg0) { 
       Log.d("onMapPOISelected"); 
      } 

      @Override 
      public void onMapActionUp(SKScreenPoint arg0) { 
      } 

      @Override 
      public void onMapActionDown(SKScreenPoint arg0) { 
      } 

      @Override 
      public void onLongPress(SKScreenPoint arg0) { 
      } 

      @Override 
      public void onInternetConnectionNeeded() { 
      } 

      @Override 
      public void onInternationalisationCalled(int arg0) { 
      } 

      @Override 
      public void onDoubleTap(SKScreenPoint arg0) { 
       Log.d("onDoubleTap"); 
       float zoom = mapView.getZoomLevel() + 1; 
       if (zoom <= SKMapSurfaceView.MINIMUM_ZOOM_LEVEL) { 
        mapView.setZoomSmooth(zoom, 250); 
       } 
      } 

      @Override 
      public void onCustomPOISelected(SKMapCustomPOI arg0) { 
       Log.d("onCustomPOISelected"); 
      } 

      @Override 
      public void onCompassSelected() { 
      } 

      @Override 
      public void onAnnotationSelected(SKAnnotation annotation) { 
       Log.d("onAnnotationSelected"); 
      } 

      @Override 
      public void onAnimationsFinished() { 
      } 

      @Override 
      public void onActionZoom() { 
       Log.d("onActionZoom"); 
      } 

      @Override 
      public void onActionPan() { 
       Log.d("onActionPan"); 
      } 
     }); 

내가하지 주석 어딘가에 하나 개의 탭을한다면 내가 할 다음 로그, 다음 중 하나 개를 누릅니다 : 여기 내 코드입니다 두 경우 모두 onSingleTap 콜백을 볼 수 있습니다. (Skobbler 맵 초기화 코드는 건너 뛰었지만 자습서에 따라 완료되었으므로 성공적으로 초기화되고지도가 표시됩니다.)

+0

안녕하세요. 이 문제를 디버그하려면 더 많은 정보가 필요합니다. 탭하려고하는 주석 중 하나에 대한 코드와 콘솔에서 얻은 로그 (탭이 감지 된 위치를 나타냄)를 포함 할 수 있습니까? – Ando

+0

코드를 포함하도록 내 원래 게시물을 수정했습니다. 감사. –

답변

0

발생하는 문제는 19 일에 발생한 버그였습니다 5 월 SDK의.

우리는이 문제를 다음 번 SDK 업데이트 (2014 년 6 월 30 일)에서 테스트했으며, 지금은 onAnnotationSelected이 항상 올바르게 호출됩니다. 새 버전을 사용할 수있게되면 SDK를 업데이트하십시오. 업데이트가 제공되면 이메일/뉴스 레터를 받아야합니다.

+0

안녕하세요, 오늘 다운로드 한 최신 버전 (버전 2.1.0)으로 SDK를 업데이트했는데 "SINGLE TAP CONFIRMED"이후에 " "0"대신 "null"을 지정하십시오. 하지만 내 onAnnotationSelected가 호출되지 않습니다. 나는 여전히 onSingleTap에 전화를받습니다. 어떤 아이디어? –

+0

흠 ... 자세한 조사 및 코드가 필요하므로 [email protected]에 문의하십시오. – Ando

+0

나는 오래된 주석을 지우지 않았으며 작동하지 않는 것은 주석 이었음이 밝혀졌습니다. 새로운 SDK (2.1.0)에서 주석을 클릭하면 현재 주석이 추가되고 이전 화면에서 그대로 유지됩니다. 나는 지금 내 맵 화면을 표시하기 전에 모든 오래된 것들을 삭제하기 위해 deleteAllAnnotationsAndCustomPOIs()를 사용하고있다. 당신의 도움을 주셔서 감사합니다. –

관련 문제