我在我的 Flex 站点中使用 Google 地图来创建地图。我在地图上覆盖了多边形。当用户在多边形上滚动时,会打开一个信息窗口来识别该区域,并且该区域的填充 Alpha 设置为 0。展开时,信息窗口被移除,填充 Alpha 恢复为默认值 0.2。
多边形显示并且信息窗口被正确添加和删除。问题是填充 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 显示正确?如果有人有任何想法,我很想听听他们的意见。
谢谢。
-拉克西米迪