Flex网站中的Google Maps Rollover问题

时间:2010-05-07 23:24:09

标签: flex maps rollover

我在我的Flex网站中使用Google地图来创建地图。我在地图上叠加了多边形。当用户滚动多边形时,信息窗口会打开,识别该区域,区域的填充Alpha设置为0.在转出时,信息窗口将被删除,填充Alpha将返回到默认值0.2。

显示多边形并正确添加和删除InfoWindow。问题是填充alpha的更改仅发生在列表中最后一个多边形上。例如,如果我有多边形A,B,C和D.如果我翻转A,那么A的alpha应该改变。但是,而不是D的alpha变化。无论我翻转哪个多边形,最后一个多边形的alpha都会改变。这很奇怪,因为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;
    }

有关为什么更改alpha的函数仅在最后一个多边形上触发的任何建议,即使InfoWindow正确显示?如果有人有任何想法,我很乐意听到他们。

感谢。

-Laxmidi

1 个答案:

答案 0 :(得分:1)

好的,我明白了。我应该使用:event.currentTarget.setOptions(options Hover);而不是使用neighb Shapes来设置悬停选项;

-Laxmidi