Map Rooms is a Flex application that uses the Google Maps API for Flash in order to provide collaboration features as well as a text chat. You can test drive the application for yourself here.
The original application is powered by BlazeDS, but since I am more familiar with FMS I decided to port it over. All source files are posted here (Zip file with sources is here) and I left some of the original BlazeDS code in there (commented out). The basic differences between Christophe's version and mine is the fact that my application first connects to FMS and then uses SharedObject onSyncs to provide the data sharing features.
I've copied the following instructions from Christophe, hoping he doesn't mind.
1. Access http://coenraets.org/apps/gmaprooms/gmaprooms.html on two different machines or in two browser windows on the same machine.
2. Make sure you logon with two different user names and the same room name.
3. Move the map in one browser and notice that the position of the map is synchronized in the other browser.
4. You can also search an address in one browser and the resulting map position will appear in the two browsers.
5. The zoom level and the map type are also synchronized between users.
6. Click the "Whiteboard" button in one browser, pick a color to draw on the map (upper left corner), and start drawing.
I'm providing all sources for my ported application, but remember that you wil need to download the Google Maps ActionScript 3 API first and then add the swc file to the libs folder of your project. You also need to obtain a Google Maps API key and assign it to map.key in the initMap() function in MapArea.mxml. Lastly, you need to update line 29 of NCConnect.as to reflect your own FMS/Wowza/Red5 address.
The reason this application is compatible with FMS and Wowza (and I believe also with Red5) is because it uses no serverside ActionScript code. I've tested it on FMS2+3 and the latest Wowza Pro.
I've had some problems sending customs objects over the FMS NetConnection and I may have left some remnants of that in my code. For some reason I didn't manage to successfully send a ChatEvent over the NetConnection, yet WhiteboardEvent seems to work. The only difference between those two events seems to be that ChatEvent has another custom class nested within it (its data property is typed as ChatVO). I ended up sending just that data property (the ChatVO itself) over the wire but I needed to add registerClassAlias("ChatVOAlias", ChatVO ) and getClassByAlias("ChatVOAlias") to my code (in SOModel.as). Thanks to Dirk Eismann for the tip, I had never heard of those methods before...
It would be great to have more info and documentation on FMS3's custom class pass-through feature in order to establish what exactly can and can't be done - it may of course just be a bug in my code but whatever I tried the chat did not work as soon as I tried to send the complete ChatEvent...