我在我的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
答案 0 :(得分:1)
好的,我明白了。我应该使用:event.currentTarget.setOptions(options Hover);而不是使用neighb Shapes来设置悬停选项;
-Laxmidi