del.icio.us Digg WeatherBonk.com | SkiBonk.com
About GolfBonk Golf Bonk is a mashup that lets you access a variety of golf course information on a Google map. Use the interactive map to visually locate courses in your area that meet your conditions. Many of the courses listed on Golf Bonk have high resolution imagery available, which can give you a great preview of courses you plan to play or help you review your game. In addition, Golf Bonk supports course annotations, where you can label any number of features and points of interest on a course and share them with others. To create an annotation, simply click anywhere on the detailed course map and enter information, such as a hazard, info, or label a pin.

Data The golf course information was compiled from numerous golf resorces, directories, and course websites as well as the US Geological Names database, and geo-coded through several services (Yahoo, Google, USGS, custom developed) in an attempt to obtain the most accurate coordinates. All of the data is user-editable to help keep this collaborative directory up to date. Weather infomation comes primarily from the National Weather Service Digital forcast database.

Services If you have any comments, feedback, collaboration initiatives, or are interested in customized web development for your organization, please contact us. A variety of professional services are available to develop custom mashups with your organizational data.

Technology GolfBonk is based on a new extension to the WeatherBonk architecture, which provides support for very rapid development of enterprise-grade mashups. At its core are a set of custom java annotations used in conjunction with the object's definition that define the necessary 'meta-data' on how to integrate the object in a mashup. Thus, an existing enterprise system can readily be 'mashed-up' by simply adding the required annotations, or creating a simple wrapper class. Once the annotations are defined, the rest of the application is automatically assembled. For example, to add a new field to an object requires a change only in one place. Depending on the configuration, it would propagate to other parts of the application, such as a filter for the user query, as a column in the detail grid, in the popup, and as an editable field for user modified data.

Annotation Example:
public class GolfCoursePoint extends MashupPoint {    // Parent class for mashup map points.
                                                      // Handles creation of necessary map
                                                      // code, coordinates, etc...

    String courseName;

    ....

    @Label(name="Course Type")                        // Label for field
    @Display(enum={"Public","Private","Resort"})      // Enumerated type to auto generate select boxes, etc...
    String courseType;

    @Permissions(modify=Permissions.USER)              // Any user may modify this field
    int numHoles;

    public MashupIcon computeIcon() {                  // method to create the icon
        if (numHoles==9)
            return new MashupIcon("9hole.png");
        else
            return new MashupIcon("18hole.png");
    }

    ...
}