2010-05-07 3 views
0

플렉스 사이트에서 Google지도를 사용하여지도를 만들고 있습니다. 맵에 다각형이 겹쳐져 있습니다. 사용자가 다각형을 롤오버하면 정보 창이 열리고 영역의 채우기 알파가 0으로 설정됩니다. 롤아웃시 정보 창이 제거되고 채우기 알파가 기본값 인 0.2로 반환됩니다.Google지도 플렉스 웹 사이트의 롤오버 문제

다각형이 표시되고 InfoWindow가 올바르게 추가되고 제거됩니다. 문제는 채우기 알파의 변경은 목록의 마지막 폴리곤에서만 발생한다는 것입니다. 예를 들어 폴리곤 A, B, C, D가있는 경우 A를 롤오버하면 A의 알파가 변경됩니다. 그러나 대신에 D의 알파가 바뀝니다. 전복 폴리곤에 관계없이 마지막 폴리곤의 알파가 변경됩니다. infoWindows가 롤오버에서 올바르게 작동하기 때문에 이상합니다. 따라서 폴리곤 A를 롤오버하면 InfoWindow A에 대한 올바른 정보가 나타납니다.

아래의 코드를 참조하십시오

private function allEncodedPolygons(event:MouseEvent) : void { 
       var myPaneManager:IPaneManager = map.getPaneManager(); 
       var myMapPane:IPane = myPaneManager.createPane(); 



       if (allHoodsToggle.selected) { 

        map.clearOverlays(); 
        mapType.selectedIndex = -1; 

        for each (var neighbNode:XML in detailMapResultData){ 
         outlinePolygon = this.createPoly(neighbNode); 
        map.addOverlay(outlinePolygon)}; 

        allHoodsToggle.removeEventListener(MouseEvent.CLICK, allEncodedPolygons); 


       } 
       else {myPaneManager.clearOverlays(); allHoodsToggle.removeEventListener(MouseEvent.CLICK, allEncodedPolygons); 

        }  


    } 

아래의 기능은 다각형을 생성하고 롤오버 기능이 왜 알파를 변경하는 기능에 발사되는대로

private var neighbShapes:Polygon; 

    private function createPoly(neighbNode:XML):Polygon { 
     var optionsDefault:PolygonOptions = new PolygonOptions({ strokeStyle: {thickness: 5, color: 0xFFFF00, alpha: 0.4, pixelHinting: true}, fillStyle: { alpha: 0.2 }}); 


     var neighbCenterLat:Number = neighbNode.latitudeCenter.toString(); 
     var neighbCenterLong:Number = neighbNode.longitudeCenter.toString(); 
     var neighbCenter:LatLng = new LatLng(neighbCenterLat,neighbCenterLong); 
     var optionsHover:PolygonOptions = new PolygonOptions({ fillStyle: { alpha: 0.0 }}); 
     var encodedData:EncodedPolylineData = new EncodedPolylineData(neighbNode.encoding.toString(), neighbNode.zoomFactor.toString(), neighbNode.level.toString(), neighbNode.numlevels.toString()); 
     var encodedList:Array = [encodedData]; 
     neighbShapes = Polygon.fromEncoded(encodedList, optionsDefault); 

     neighbShapes.addEventListener(MapMouseEvent.CLICK, function(event:MapMouseEvent): void { 
      map.openInfoWindow(event.latLng, new InfoWindowOptions({content: neighbNode.name.toString(), hasCloseButton:false, hasShadow:true})); 
     }); 

     neighbShapes.addEventListener(MapMouseEvent.ROLL_OVER, function(event:MapMouseEvent): void { 
      neighbShapes.setOptions(optionsHover); 

      map.openInfoWindow(neighbCenter, new InfoWindowOptions({content: neighbNode.name.toString(), hasCloseButton:false, hasShadow:false})); 
     }); 

     neighbShapes.addEventListener(MapMouseEvent.ROLL_OUT, function(event:MapMouseEvent): void { 
      neighbShapes.setOptions(optionsDefault); 
     }); 

     return neighbShapes; 
    } 

어떤 제안 InfoWindow가 올바르게 표시 되더라도 마지막 폴리곤 만? 누구든지 아이디어가 있다면, 나는 그들을 듣고 싶습니다.

감사합니다. 좋아

-Laxmidi

답변

1

, 나는 그것을 알아 냈다. 호버 옵션을 설정하기 위해 neighbShapes를 타겟팅하는 대신 다음을 사용해야합니다. event.currentTarget.setOptions (optionsHover);

-laxmidi