You can rotate the polygon using the stRotation property on PolygonGraphics. This rotation is counter-clockwise from north. If you want it to align with a specific edge, you should just be able to compute the angle of rotation based on the two points making up the edge you want to align with. I through together this quick and dirty example but the math is not completely correct (I'm still not completely awake :). Also keep in mind that at some point the curvature of the earth will probably come into play.
var viewer = new Cesium.Viewer('cesiumContainer');
var entity = viewer.entities.add({
name : 'Blue polygon with holes and outline',
polygon : {
hierarchy : {
positions : Cesium.Cartesian3.fromDegreesArray([-99.0, 39.0,
-98.95, 38.95,
-98.95, 39.0,
-99.0, 39.0])
},
material : '../images/checkerboard.png'
}
});
var cartographicStart = Cesium.Cartographic.fromDegrees(-99.0, 39.0);
var cartographicEnd = Cesium.Cartographic.fromDegrees(-98.95, 38.95);
var deltaY = cartographicEnd.latitude - cartographicStart.latitude;
var deltaX = cartographicEnd.longitude - cartographicStart.longitude;
entity.polygon.stRotation = -Math.atan2(deltaY, deltaX);
viewer.zoomTo(viewer.entities);
Hope that helps.