home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Java Developer's Companion
/
Java Developer's Companion.iso
/
Javacup
/
INGZP26A.TAR
/
internet
/
INGZP26A
/
Map.java
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
Java Source
|
1996-05-21
|
73.0 KB
|
2,485 lines
/* $Id: Map.java,v 1.7 1996/03/31 11:43:02 djun Exp djun $
File: Map.java
Implements the Map itself as a class.
Notes: this class is currently coded by hand, with some automation.
A parallel project is working to create an application to allow
people to create similar classes, starting from a GIF or JPEG encoded
map.
Author: Djun M. Kim
Copyright (c) 1996 Djun M. Kim. All rights reserved.
*/
import java.awt.*;
import java.net.URL;
import java.util.*;
import java.lang.Math;
import Location;
import MapError;
import Route;
public class Map {
private static final int cellsize = 5;
private static final String mapImageSrc = "map.gif";
private static final String maptitle = "University of British Columbia";
private static Hashtable LocationsByKeyword = new Hashtable();
private static Hashtable LocationsByName = new Hashtable();
private Location[][] location; // Array of locations
public static final int MaxScale = 200; // max scale factor, percent
public static final int MinScale = 100; // min scale factor, percent
public static final int XSIZE = 591;
public static final int YSIZE = 451;
public static final int NXLOCS = XSIZE/cellsize + 1;
public static final int NYLOCS = YSIZE/cellsize + 1;
public Image mapimage;
MapError error_handler = new MapError();
/*------------------------------------------------------------
Access methods
------------------------------------------------------------*/
// Return the location corresponding to a given coordinate
public Location getLocation(int x, int y) {
return(location[x/cellsize][y/cellsize]);
}
public String getImageSrc() {
return mapImageSrc;
}
public String getTitle() {
return maptitle;
}
/*------------------------------------------------------------
Keyword searching
------------------------------------------------------------*/
// Returns the index of String pattern in the String target if
// pattern contained in target; matching is done in case-insensitive
// manner if ignoreCase is true. Uses a brute-force algorithm.
// Returns -1 if there is no containment. (Should perhaps use exceptions)
// This should be part of a class extending String, but String is final...
public int contains(String pattern, String target, boolean ignoreCase) {
char[] pat;
char[] targ;
if (ignoreCase) {
pat = pattern.toLowerCase().toCharArray();
targ = target.toLowerCase().toCharArray();
} else {
pat = pattern.toCharArray();
targ = target.toCharArray();
}
int patlen = pattern.length();
int targlen = target.length();
int i = 0; int j = 0;
do {
if (targ[i] == pat[j]) {
i++; j++;
} else {
i = i - j + 1;
j = 0;
}
} while (j < patlen && i < targlen);
if (j >= patlen) {
return(i - patlen);
} else {
return(-1);
}
}
// Return a vector of locations matching the given string
public Vector findLocationsByKeyword(String s) {
Vector locn_vec = new Vector();
String key;
for (Enumeration enum = LocationsByKeyword.keys();
enum.hasMoreElements(); ) {
key = (String) enum.nextElement();
if (contains(s, key, true) != -1) {
for (Enumeration vec_enum =
((Vector)(LocationsByKeyword.get(key))).elements();
vec_enum.hasMoreElements(); ) {
Location loc = (Location)vec_enum.nextElement();
if (!locn_vec.contains(loc)) {
locn_vec.addElement(loc);
}
}
}
}
return(locn_vec);
}
// Register a keyword in the dictionary of keywords/locations
public void registerKeyword(String s, Location loc) {
Vector loc_vec = (Vector) LocationsByKeyword.get(s);
if (loc_vec == null) { // not in Hashtable, create new entry
loc_vec = new Vector();
loc_vec.addElement(loc);
} else { // add given loc to list of locations in loc_vec
loc_vec.addElement(loc);
};
try {
LocationsByKeyword.put(s, loc_vec);
} catch (java.lang.NullPointerException e) {
error_handler.display("Error registering keyword in map: " +
e.getMessage());
}
}
// Register a location in the dictionary of location names/locations
// Silently overwrites existing entries with same key.
public void registerLocation(String s, Location loc) {
try {
LocationsByName.put(s, loc);
} catch (java.lang.NullPointerException e) {
error_handler.display("Error registering location in map: " +
e.getMessage());
}
}
// Get a location by location name from the dictionary of names/locations
public Location getLocationByName(String s) {
return((Location)LocationsByName.get(s));
}
// Initialize all of the locations which the region r covers
// (i.e. the center of the cell is contained in the region)
// to the value of location loc.
public void initLocsFromRegion(Location loc, Region r) {
Rectangle bb = r.perim.getBoundingBox();
int start_row = Math.max(0, bb.x/cellsize - 1);
int start_col = Math.max(0, bb.y/cellsize - 1);
int end_row = Math.min(NXLOCS, start_row + Math.max(cellsize, bb.width)/cellsize + 1);
int end_col = Math.min(NYLOCS, start_col + Math.max(cellsize, bb.height)/cellsize + 1);
int cellmidx;
int cellmidy;
int offset = cellsize/2;
for (int rows = start_row; rows <= end_row; rows++) {
cellmidx = (rows * cellsize) + offset;
for (int cols = start_col; cols <= end_col; cols++) {
cellmidy = (cols * cellsize) + offset;
if (r.perim.inside(cellmidx, cellmidy)) {
location[rows][cols] = loc;
}
}
}
};
/*------------------------------------------------------------
Location info initialization.
------------------------------------------------------------*/
// Initialize the array of locations.
// This is a HUGE method - it should perhaps be set up to
// initialize the data from a stream.
public boolean initMapLocations() {
Location loc;
Polygon p;
location = new Location[NXLOCS][NYLOCS];
// Mathematics Building ----------------------------
loc = new Building(this, new Point(165, 290));
loc.setName("Mathematics Building");
loc.setURL("http://www.math.ubc.ca");
loc.initKeywords();
loc.setInfoText("Mathematics Department,\n"+
"#121-1984 Mathematics Rd,\n" +
"University of British Columbia,\n" +
"Vancouver, BC,\n" +
"V6T 1Z2\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Mathematics Department");
loc.appendtoInfoText("Mathematics Library");
loc.appendtoInfoText("... Java programmers!");
p = new Polygon();
p.addPoint(165, 289);
p.addPoint(180, 289);
p.addPoint(180, 297);
p.addPoint(165, 297);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Mathematics Annex ----------------------------
loc = new Building(this, new Point(184, 282));
loc.setName("Mathematics Annex");
loc.setURL("http://www.math.ubc.ca");
loc.setInfoText("Mathematics Annex,\n"+
"1986 Mathematics Rd");
loc.initKeywords();
loc.addKeyword("Mathematics Annex");
p = new Polygon();
p.addPoint(182, 278);
p.addPoint(187, 278);
p.addPoint(187, 292);
p.addPoint(182, 292);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Old Computer Science Building ----------------------------
loc = new Building(this, new Point(195, 295));
loc.setName("Old Computer Science Building");
loc.setURL("http://www.science.ubc.ca/departments/sci1/");
loc.initKeywords();
loc.setInfoText("Old Computer Science Building,\n"+
"6356 Agricultural Road\n" +
"\n Contains:\n\n");
loc.appendtoInfoText("University Computing Services");
loc.appendtoInfoText("Science One program");
loc.appendtoInfoText("Statistics Department");
p = new Polygon();
p.addPoint(193, 293);
p.addPoint(197, 293);
p.addPoint(197, 301);
p.addPoint(202, 301);
p.addPoint(202, 307);
p.addPoint(199, 307);
p.addPoint(199, 312);
p.addPoint(193, 312);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Old Auditorium ----------------------------
loc = new Building(this, new Point(155, 290));
loc.setName("Old Auditorium");
loc.initKeywords();
loc.setInfoText("Old Auditorium,\n"+
"6344 Memorial Road\n" +
"\n Contains:\n\n");
loc.appendtoInfoText("Yum Yum's (Chinese Food)");
loc.addKeyword("Cafeteria");
p = new Polygon();
p.addPoint(152, 289);
p.addPoint(160, 289);
p.addPoint(160, 293);
p.addPoint(158, 293);
p.addPoint(158, 298);
p.addPoint(160, 298);
p.addPoint(160, 301);
p.addPoint(152, 301);
p.addPoint(152, 299);
p.addPoint(154, 299);
p.addPoint(154, 292);
p.addPoint(152, 292);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Old Administration Building ----------------------------
loc = new Building(this, new Point(155, 282));
loc.setName("Old Administration Building");
loc.setURL("http://www.bog.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Old Adminstration Building,\n"+
"6328 Memorial Road\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Board of Governors");
loc.appendtoInfoText("Budget Planning & Systems Management");
loc.appendtoInfoText("Ceremonies Office");
loc.appendtoInfoText("Chancellor's Office");
loc.appendtoInfoText("Community Relations");
loc.appendtoInfoText("President's Office");
loc.appendtoInfoText("UBC Press");
loc.appendtoInfoText("Vice President's Office");
p = new Polygon();
p.addPoint(153, 279);
p.addPoint(160, 279);
p.addPoint(160, 287);
p.addPoint(153, 287);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Buchanan Building A ----------------------------
loc = new Building(this, new Point(130, 255));
loc.setName("Buchanan Block A");
loc.setURL("http://www.arts.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Buchanan Block A,\n"+
"1866 Main Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Arts");
loc.appendtoInfoText("Arts Snack Bar");
p = new Polygon();
p.addPoint(125, 253);
p.addPoint(140, 253);
p.addPoint(140, 259);
p.addPoint(135, 259);
p.addPoint(135, 261);
p.addPoint(125, 261);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Buchanan Building B ----------------------------
loc = new Building(this, new Point(142, 245));
loc.setName("Buchanan Block B");
loc.setURL("http://www.arts.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Buchanan Block B,\n"+
"1866 Main Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Arts");
p = new Polygon();
p.addPoint(139, 241);
p.addPoint(144, 241);
p.addPoint(144, 261);
p.addPoint(139, 261);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Buchanan Building C ----------------------------
loc = new Building(this, new Point(125, 243));
loc.setName("Buchanan Block C");
loc.setURL("http://www.arts.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Buchanan Block C,\n"+
"1866 Main Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Arts");
p = new Polygon();
p.addPoint(123, 240);
p.addPoint(137, 240);
p.addPoint(137, 245);
p.addPoint(123, 245);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Buchanan Building D ----------------------------
loc = new Building(this, new Point(115, 225));
loc.setName("Buchanan Block D");
loc.setURL("http://www.arts.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Buchanan Block D,\n"+
"1866 Main Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Arts");
p = new Polygon();
p.addPoint(115, 225);
p.addPoint(122, 225);
p.addPoint(122, 247);
p.addPoint(115, 247);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Buchanan Building E ----------------------------
loc = new Building(this, new Point(125,228 ));
loc.setName("Buchanan Block E");
loc.setURL("http://www.arts.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Buchanan Block E,\n"+
"1866 Main Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Arts");
p = new Polygon();
p.addPoint(122, 226);
p.addPoint(133, 226);
p.addPoint(133, 232);
p.addPoint(122, 232);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Buchanan Tower ----------------------------
loc = new Building(this, new Point(140, 230));
loc.setName("Buchanan Tower");
loc.setURL("http://www.arts.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Buchanan Tower,\n"+
"1873 East Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Economics Department");
loc.appendtoInfoText("English Department");
loc.appendtoInfoText("French Department");
loc.appendtoInfoText("Germanic Studies");
loc.appendtoInfoText("Hispanic and Italian Studies");
loc.appendtoInfoText("History Department");
loc.appendtoInfoText("Philosophy Department");
p = new Polygon();
p.addPoint(138, 225);
p.addPoint(143, 225);
p.addPoint(143, 235);
p.addPoint(138, 235);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Lasserre Building ----------------------------
loc = new Building(this, new Point(142, 280));
loc.setName("Lasserre Building");
loc.setURL("http://www.architecture.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Lasserre Building,\n"+
"6333 Memorial Road\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("School of Architecture");
loc.appendtoInfoText("Community and Regional Planning");
loc.appendtoInfoText("Fine Arts Department");
p = new Polygon();
p.addPoint(140, 277);
p.addPoint(145, 277);
p.addPoint(145, 290);
p.addPoint(140, 290);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Fredrick Wood Theatre ----------------------------
loc = new Building(this, new Point(122, 290));
loc.setName("Fredrick Wood Theatre");
loc.setURL("http://www.arts.ubc.ca/arts/theatre/theatre.html");
loc.initKeywords();
loc.setInfoText("Fredrick Wood Theatre,\n"+
"6354 Crescent Road\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Dorothy Somerset Studio");
loc.appendtoInfoText("Fredrick Wood Theatre Box Office");
loc.appendtoInfoText("Theatre Department");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(120, 287);
p.addPoint(126, 287);
p.addPoint(126, 292);
p.addPoint(129, 292);
p.addPoint(129, 296);
p.addPoint(125, 296);
p.addPoint(125, 301);
p.addPoint(120, 301);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Belkin Art Gallery ----------------------------
loc = new Building(this, new Point(125, 277));
loc.setName("Belkin Art Gallery");
loc.setURL("http://www.arts.ubc.ca/arts/finearts/main.htm");
loc.initKeywords();
loc.setInfoText("Morris and Helen Belkin Art Gallery,\n"+
"1825 Main Mall,\n"+
"Vancouver, BC; V6T 1Z2,\n"+
"(604) 822-2759.\n"+
"Hours: Tues - Friday 10am - 5pm,\n"+
" Saturday noon - 5pm");
p = new Polygon();
p.addPoint(124, 275);
p.addPoint(131, 275);
p.addPoint(131, 280);
p.addPoint(120, 280);
p.addPoint(120, 277);
p.addPoint(124, 277);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Geography Building ----------------------------
loc = new Building(this, new Point(170, 305));
loc.setName("Geography Building");
loc.setURL("http://www.geog.ubc.ca");
loc.initKeywords();
loc.setInfoText("Geography Building,\n"+
"1984 West Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Geography Department");
loc.appendtoInfoText("Map Library");
p = new Polygon();
p.addPoint(168, 302);
p.addPoint(173, 302);
p.addPoint(173, 308);
p.addPoint(176, 304);
p.addPoint(180, 304);
p.addPoint(184, 307);
p.addPoint(184, 302);
p.addPoint(187, 302);
p.addPoint(187, 314);
p.addPoint(184, 314);
p.addPoint(184, 312);
p.addPoint(173, 312);
p.addPoint(173, 314);
p.addPoint(168, 314);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Music Building ----------------------------
loc = new Building(this, new Point(140, 300));
loc.setName("Music Building");
loc.setURL("http://www.arts.ubc.ca/arts/music/music.html");
loc.initKeywords();
loc.setInfoText("Music Building,\n"+
"6361 Memorial Road"+
"\n Contains:\n\n");
loc.appendtoInfoText("Music Department");
loc.appendtoInfoText("Music Library");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(134, 295);
p.addPoint(145, 295);
p.addPoint(145, 303);
p.addPoint(134, 303);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Henry Angus/David Lam Buildings ----------------------------
loc = new Building(this, new Point(200, 280));
loc.setName("Henry Angus/David Lam Buildings");
loc.setURL("http://www.commerce.ubc.ca");
loc.initKeywords();
loc.setInfoText("Henry Angus Building,\n"+
"2053 Main Mall\n"+
"David Lam Management Research Center\n"+
"2033 Main Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Commerce ");
loc.appendtoInfoText(" & Business Administration");
loc.appendtoInfoText("Trekker's Restaurant");
loc.appendtoInfoText("Express Cafeteria");
loc.appendtoInfoText("Faculty Development");
loc.appendtoInfoText("Faculty of Arts MultiMedia Lab");
loc.appendtoInfoText("Continuing Studies");
loc.appendtoInfoText("David Lam Management Research Library");
loc.addKeyword("Henry Angus Building");
loc.addKeyword("David Lam Management Research Center");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(195, 279);
p.addPoint(205, 279);
p.addPoint(205, 277);
p.addPoint(227, 277);
p.addPoint(227, 292);
p.addPoint(223, 292);
p.addPoint(223, 284);
p.addPoint(219, 284);
p.addPoint(219, 288);
p.addPoint(213, 282);
p.addPoint(210, 282);
p.addPoint(210, 288);
p.addPoint(196, 288);
p.addPoint(192, 282);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Hennings Building (Physics) ----------------------------
loc = new Building(this, new Point(195, 230));
loc.setName("Hennings Building (Physics)");
loc.setURL("http://www.physics.ubc.ca");
loc.setInfoText("Hennings Building,\n"+
"Department of Physics\n"+
"6224 Agricultural Rd.");
loc.initKeywords();
loc.addKeyword("Hennings Building");
loc.addKeyword("Physics Department");
p = new Polygon();
p.addPoint(193, 227);
p.addPoint(205, 227);
p.addPoint(205, 250);
p.addPoint(193, 250);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Hebb Building (Physics) ----------------------------
loc = new Building(this, new Point(210, 230));
loc.setName("Hebb Building (Physics)");
loc.setURL("http://www.physics.ubc.ca");
loc.setInfoText("Hebb Building,\n"+
"Department of Physics\n"+
"2045 East Mall\n"+
"\n Contains:\n"+
"Hebb theater\n");
loc.initKeywords();
loc.addKeyword("Hebb Building");
loc.addKeyword("Physics Department");
p = new Polygon();
p.addPoint(208, 225);
p.addPoint(213, 225);
p.addPoint(213, 234);
p.addPoint(211, 234);
p.addPoint(211, 236);
p.addPoint(218, 236);
p.addPoint(218, 236);
p.addPoint(218, 240);
p.addPoint(208, 240);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// MacMillan Building ----------------------------
loc = new Building(this, new Point(330, 280));
loc.setName("MacMillan Building");
loc.setURL("http://www.forestry.ubc.ca");
loc.initKeywords();
loc.setInfoText("MacMillan Building,\n"+
"2357 Main Mall\n" +
"\n Contains:\n\n");
loc.appendtoInfoText("Agriculture Department");
loc.appendtoInfoText("Forestry Department");
loc.appendtoInfoText("Forestry/Agriculture Library");
loc.appendtoInfoText("Undercut cafeteria");
p = new Polygon();
p.addPoint(327, 278);
p.addPoint(340, 278);
p.addPoint(340, 282);
p.addPoint(332, 282);
p.addPoint(332, 290);
p.addPoint(342, 290);
p.addPoint(341, 283);
p.addPoint(343, 283);
p.addPoint(344, 280);
p.addPoint(345, 280);
p.addPoint(348, 281);
p.addPoint(350, 281);
p.addPoint(356, 281);
p.addPoint(356, 285);
p.addPoint(348, 285);
p.addPoint(348, 295);
p.addPoint(345, 295);
p.addPoint(345, 298);
p.addPoint(340, 299);
p.addPoint(341, 296);
p.addPoint(327, 296);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Forward Building ----------------------------
loc = new Building(this, new Point(312, 292));
loc.setName("Forward Building (Metallurgy)");
loc.initKeywords();
loc.setInfoText("Frank Forward Building,\n"+
"6350 Stores Road\n" +
"\n Contains:\n\n");
loc.appendtoInfoText("Metallurgy Department");
p = new Polygon();
p.addPoint(309, 290);
p.addPoint(315, 290);
p.addPoint(315, 296);
p.addPoint(321, 296);
p.addPoint(321, 298);
p.addPoint(320, 298);
p.addPoint(320, 301);
p.addPoint(312, 301);
p.addPoint(312, 297);
p.addPoint(309, 297);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// The Barn ----------------------------
loc = new Building(this, new Point(314, 283));
loc.setName("The Barn");
loc.initKeywords();
loc.setInfoText("The Barn Coffee Shop,\n"+
"2323 Main Mall");
loc.addKeyword("Cafeteria");
p = new Polygon();
p.addPoint(312, 280);
p.addPoint(318, 280);
p.addPoint(318, 285);
p.addPoint(312, 285);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// MacLeod Building (Electrical Engineering) -------------------------
loc = new Building(this, new Point(335, 255));
loc.setName("MacLeod Building");
loc.setURL("http://www.ee.ubc.ca");
loc.setInfoText("MacLeod Building,\n"+
"2356 Main Mall\n" +
"\n Contains:\n"+
"Electrical Engineering Department\n");
loc.initKeywords();
loc.addKeyword("MacLeod Building");
loc.addKeyword("Electrical Engineering Department");
p = new Polygon();
p.addPoint(323, 257);
p.addPoint(334, 257);
p.addPoint(334, 249);
p.addPoint(339, 249);
p.addPoint(339, 258);
p.addPoint(340, 258);
p.addPoint(340, 264);
p.addPoint(323, 264);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Chemistry Building ----------------------------
loc = new Building(this, new Point(195, 255));
loc.setName("Chemistry Building");
loc.setInfoText("Chemistry Department\n"+
"2036 Main Mall");
loc.initKeywords();
loc.addKeyword("Chemistry Building");
loc.addKeyword("Chemistry Department");
p = new Polygon();
p.addPoint(193, 251);
p.addPoint(197, 251);
p.addPoint(197, 253);
p.addPoint(213, 253);
p.addPoint(213, 245);
p.addPoint(216, 245);
p.addPoint(216, 250);
p.addPoint(226, 250);
p.addPoint(226, 264);
p.addPoint(221, 264);
p.addPoint(221, 261);
p.addPoint(196, 261);
p.addPoint(196, 258);
p.addPoint(193, 258);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Chemistry & Physics Building ----------------------------
loc = new Building(this, new Point(220, 230));
loc.setName("Chemistry & Physics Building");
loc.setInfoText("Chemistry & Physics Building,\n"+
"6221 University Blvd");
loc.initKeywords();
loc.addKeyword("Chemistry & Physics Building");
p = new Polygon();
p.addPoint(218, 227);
p.addPoint(221, 227);
p.addPoint(224, 231);
p.addPoint(224, 235);
p.addPoint(228, 237);
p.addPoint(228, 246);
p.addPoint(226, 246);
p.addPoint(226, 250);
p.addPoint(222, 250);
p.addPoint(222, 245);
p.addPoint(220, 245);
p.addPoint(220, 234);
p.addPoint(218, 234);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Brock Hall ----------------------------
loc = new Building(this, new Point(150, 205));
loc.setName("Brock Hall");
loc.setURL("http://www.student-services.ubc.ca");
loc.initKeywords();
loc.setInfoText("Brock Hall,\n"+
"1874 East Mall,\n" +
"University of British Columbia,\n" +
"Vancouver, BC\n"+
"V6T 1Z1\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Admissions (Undergraduate)");
loc.appendtoInfoText("Awards and Financial Aid");
loc.appendtoInfoText("Career Services");
loc.appendtoInfoText("Housing");
loc.appendtoInfoText("Publications");
loc.appendtoInfoText("Registrar's Office");
loc.appendtoInfoText("Registration");
loc.appendtoInfoText("Senate");
loc.appendtoInfoText("Student Records");
loc.appendtoInfoText("Student Services");
p = new Polygon();
p.addPoint(143, 201);
p.addPoint(147, 201);
p.addPoint(147, 197);
p.addPoint(153, 197);
p.addPoint(153, 201);
p.addPoint(157, 201);
p.addPoint(157, 202);
p.addPoint(159, 202);
p.addPoint(159, 204);
p.addPoint(157, 204);
p.addPoint(157, 215);
p.addPoint(143, 215);
p.addPoint(143, 211);
p.addPoint(140, 211);
p.addPoint(140, 213);
p.addPoint(135, 213);
p.addPoint(135, 204);
p.addPoint(140, 204);
p.addPoint(140, 208);
p.addPoint(143, 208);
p.addPoint(143, 201);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Women's Studies ----------------------------
loc = new Building(this, new Point(165, 210));
loc.setName("Women's Studies");
loc.initKeywords();
loc.setInfoText("Women's Studies,\n"+
"1896 East Mall");
p = new Polygon();
p.addPoint(162, 210);
p.addPoint(171, 210);
p.addPoint(171, 215);
p.addPoint(162, 215);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Student Union Building ----------------------------
loc = new Building(this, new Point(190, 180));
loc.setName("Student Union Building");
loc.setURL("http://www.ams.ubc.ca");
loc.initKeywords();
loc.setInfoText("Student Union Building,\n"+
"6138 Student Union Bldg. Blvd\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("AMS Box Office");
loc.appendtoInfoText("AMS Word Processing");
loc.appendtoInfoText("Alma Mater Society");
loc.appendtoInfoText("Art Gallery");
loc.appendtoInfoText("Bank of Montreal");
loc.appendtoInfoText("Blue Chip Cookies");
loc.appendtoInfoText("Copy Right Copy Center");
loc.appendtoInfoText("Gallery Lounge");
loc.appendtoInfoText("Movie Theatre");
loc.appendtoInfoText("Ombudsoffice");
loc.appendtoInfoText("Pendulum Restaurant");
loc.appendtoInfoText("Pi R squared Pizza");
loc.appendtoInfoText("Pit Pub");
loc.appendtoInfoText("SUB cafeteria");
loc.appendtoInfoText("SpeakEasy Peer Counselling");
loc.appendtoInfoText("Subcetera");
loc.appendtoInfoText("The Deli Restaurant");
loc.appendtoInfoText("Thunderbird Stationery Store");
loc.appendtoInfoText("Toronto Dominion Bank ATM");
loc.appendtoInfoText("Travel CUTS");
loc.appendtoInfoText("VanCity Credit Union ATM");
loc.appendtoInfoText("Video Arcade");
loc.addKeyword("Student Union Building");
loc.addKeyword("SUB");
loc.addKeyword("Payphone");
loc.addKeyword("Public Washrooms");
p = new Polygon();
p.addPoint(186, 177);
p.addPoint(204, 177);
p.addPoint(204, 202);
p.addPoint(186, 202);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Aquatic Center ----------------------------
loc = new Building(this, new Point(215, 175));
loc.setName("Aquatic Center");
loc.initKeywords();
loc.setInfoText("Aquatic Center,\n"+
"6121 University Blvd\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Swimming Pool");
loc.appendtoInfoText("Weight room");
loc.appendtoInfoText("Sauna");
loc.addKeyword("Payphone");
loc.addKeyword("Public Attraction");
loc.addKeyword("Recreation Facility");
p = new Polygon();
p.addPoint(211, 173);
p.addPoint(215, 174);
p.addPoint(215, 173);
p.addPoint(217, 173);
p.addPoint(217, 172);
p.addPoint(221, 172);
p.addPoint(221, 179);
p.addPoint(223, 178);
p.addPoint(223, 181);
p.addPoint(226, 181);
p.addPoint(226, 182);
p.addPoint(227, 182);
p.addPoint(227, 191);
p.addPoint(223, 191);
p.addPoint(221, 193);
p.addPoint(217, 193);
p.addPoint(215, 192);
p.addPoint(212, 192);
p.addPoint(210, 191);
p.addPoint(210, 176);
p.addPoint(211, 176);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// War Memorial Gym ----------------------------
loc = new Building(this, new Point(230, 155));
loc.setName("War Memorial Gym");
loc.initKeywords();
loc.setInfoText("War Memorial Gym,\n"+
"6081 University Blvd\n"+
"\n Contains:\n\n")
; loc.appendtoInfoText("Physical Education Center");
loc.appendtoInfoText("Physical Education & Recreation Department");
loc.addKeyword("Recreation Facility");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(224, 153);
p.addPoint(237, 153);
p.addPoint(237, 169);
p.addPoint(234, 169);
p.addPoint(234, 172);
p.addPoint(228, 172);
p.addPoint(227, 170);
p.addPoint(224, 170);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Student Recreation Center ----------------------------
loc = new Building(this, new Point(180, 155));
loc.setName("Student Recreation Center");
loc.initKeywords();
loc.setInfoText("Student Recreation Center\n"+
"6081 Student Union Building Blvd.\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Weight Training Facility");
loc.appendtoInfoText("Climbing Gym");
loc.addKeyword("Recreation Facility");
loc.addKeyword("RecFac");
p = new Polygon();
p.addPoint(179, 153);
p.addPoint(186, 153);
p.addPoint(186, 167);
p.addPoint(188, 169);
p.addPoint(187, 173);
p.addPoint(184, 173);
p.addPoint(184, 172);
p.addPoint(179, 172);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Curtis Building ----------------------------
loc = new Building(this, new Point(105, 200));
loc.setName("Curtis Building (Law)");
loc.setURL("http://www.law.ubc.ca/");
loc.initKeywords();
loc.setInfoText("George F. Curtis Building,\n"+
"1822 East Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Law");
loc.appendtoInfoText("Law Library");
p = new Polygon();
p.addPoint(103, 195);
p.addPoint(108, 195);
p.addPoint(108, 198);
p.addPoint(115, 197);
p.addPoint(115, 200);
p.addPoint(112, 200);
p.addPoint(112, 202);
p.addPoint(117, 202);
p.addPoint(120, 198);
p.addPoint(123, 204);
p.addPoint(126, 204);
p.addPoint(126, 215);
p.addPoint(103, 215);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Thunderbird Winter Sports Center ----------------------------
loc = new Building(this, new Point(415, 145));
loc.setName("Thunderbird Winter Sports Center");
loc.initKeywords();
loc.setInfoText("Thunderbird Winter Sports Center,\n"+
"6066 Thunderbird Blvd\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Hockey rinks");
loc.appendtoInfoText("Skating rinks");
loc.appendtoInfoText("Curling rinks");
loc.appendtoInfoText("Thunderbird Sports Bar");
loc.appendtoInfoText("Thunderdeck Lounge");
loc.addKeyword("Recreation Facility");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(413, 141);
p.addPoint(433, 141);
p.addPoint(433, 175);
p.addPoint(424, 175);
p.addPoint(424, 168);
p.addPoint(408, 168);
p.addPoint(408, 158);
p.addPoint(413, 158);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Osbourne Gym ----------------------------
loc = new Building(this, new Point(410, 185));
loc.setName("Osbourne Gym");
loc.initKeywords();
loc.setInfoText("Osbourne Gym,\n"+
"6108 Thunderbird Blvd");
loc.addKeyword("Recreation Facility");
p = new Polygon();
p.addPoint(406, 181);
p.addPoint(425, 181);
p.addPoint(425, 191);
p.addPoint(418, 191);
p.addPoint(419, 195);
p.addPoint(425, 195);
p.addPoint(424, 200);
p.addPoint(426, 200);
p.addPoint(426, 204);
p.addPoint(410, 204);
p.addPoint(410, 195);
p.addPoint(416, 195);
p.addPoint(416, 191);
p.addPoint(406, 191);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// RCMP & Fire Station ----------------------------
loc = new Building(this, new Point(495, 115));
loc.setName("RCMP & Fire Station");
loc.initKeywords();
loc.setInfoText("RCMP & Fire Station,\n"+
"2992 Wesbrook Mall");
loc.addKeyword("Police Station");
p = new Polygon();
p.addPoint(488, 109);
p.addPoint(492, 110);
p.addPoint(492, 109);
p.addPoint(493, 109);
p.addPoint(494, 110);
p.addPoint(497, 110);
p.addPoint(497, 112);
p.addPoint(495, 112);
p.addPoint(496, 119);
p.addPoint(498, 118);
p.addPoint(498, 123);
p.addPoint(493, 123);
p.addPoint(493, 124);
p.addPoint(488, 124);
p.addPoint(488, 121);
p.addPoint(486, 121);
p.addPoint(486, 118);
p.addPoint(491, 118);
p.addPoint(491, 114);
p.addPoint(488, 113);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// MacDonald Building (Dentistry) ----------------------------
loc = new Building(this, new Point(275, 145));
loc.setName("MacDonald Building");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("J.B. MacDonald Building,\n"+
"2199 Wesbrook Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Faculty of Dentistry");
loc.appendtoInfoText("Dental Clinic");
p = new Polygon();
p.addPoint(272, 140);
p.addPoint(287, 140);
p.addPoint(287, 138);
p.addPoint(292, 138);
p.addPoint(292, 146);
p.addPoint(291, 146);
p.addPoint(291, 149);
p.addPoint(286, 149);
p.addPoint(286, 146);
p.addPoint(272, 146);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Friedman Building (Medicine) ----------------------------
loc = new Building(this, new Point(275, 150));
loc.setName("Friedman Building");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Friedman Building,\n"+
"2146 Health Sciences Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Anatomy Department");
loc.appendtoInfoText("Medical Microbiology");
p = new Polygon();
p.addPoint(273, 146);
p.addPoint(278, 146);
p.addPoint(278, 149);
p.addPoint(280, 149);
p.addPoint(280, 151);
p.addPoint(278, 151);
p.addPoint(278, 170);
p.addPoint(273, 170);
p.addPoint(273, 164);
p.addPoint(272, 164);
p.addPoint(272, 161);
p.addPoint(273, 161);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Copp Building (Biochemistry/Physiology) ----------------------------
loc = new Building(this, new Point(275, 150));
loc.setName("Copp Building (Biochemistry/Physiology)");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("D.H. Copp Building,\n"+
"2177 Wesbrook Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Biochemistry Department");
loc.appendtoInfoText("Physiology Department");
p = new Polygon();
p.addPoint(257, 163);
p.addPoint(267, 163);
p.addPoint(267, 167);
p.addPoint(263, 167);
p.addPoint(263, 183);
p.addPoint(265, 183);
p.addPoint(265, 187);
p.addPoint(252, 187);
p.addPoint(252, 182);
p.addPoint(258, 182);
p.addPoint(258, 168);
p.addPoint(257, 168);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Pharmacology Building ----------------------------
loc = new Building(this, new Point(272, 185));
loc.setName("Pharmacology Building");
loc.setURL("http://www.med.ubc.ca/Pharmacology.html");
loc.initKeywords();
loc.setInfoText("Pharmacology Building,\n"+
"2176 Health Sciences Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Pharmacology and Therapeutics Department");
p = new Polygon();
p.addPoint(270, 182);
p.addPoint(274, 182);
p.addPoint(274, 195);
p.addPoint(270, 195);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Woodward Building ----------------------------
loc = new Building(this, new Point(183, 190));
loc.setName("Woodward Library/IRC");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Woodward Building,\n"+
"2194 Health Sciences Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Biomedical Communications Department");
loc.appendtoInfoText("Dean of Pharmaceutical Sciences");
loc.appendtoInfoText("Faculty of Medicine");
loc.appendtoInfoText("Health Sciences Coordinator's Office");
loc.appendtoInfoText("Health Service");
loc.appendtoInfoText("Industry Liason Office");
loc.appendtoInfoText("Instructional Resources Center");
loc.appendtoInfoText("Office of Research Services");
loc.appendtoInfoText("Woodward Biomedical Library");
p = new Polygon();
p.addPoint(280, 164);
p.addPoint(286, 164);
p.addPoint(286, 168);
p.addPoint(290, 168);
p.addPoint(290, 171);
p.addPoint(286, 171);
p.addPoint(285, 173);
p.addPoint(290, 173);
p.addPoint(290, 182);
p.addPoint(287, 183);
p.addPoint(287, 185);
p.addPoint(288, 185);
p.addPoint(289, 195);
p.addPoint(277, 196);
p.addPoint(277, 185);
p.addPoint(280, 185);
p.addPoint(280, 183);
p.addPoint(275, 182);
p.addPoint(275, 178);
p.addPoint(273, 178);
p.addPoint(274, 173);
p.addPoint(280, 173);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Vancouver Hospital/UBC ----------------------------
loc = new Building(this, new Point(275, 150));
loc.setName("Acute Care Hospital");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Vancouver Hospital\n"+
" & Health Sciences Centre,\n"+
" UBC Pavillion,\n"+
" 2211 Wesbrook Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Acute Care Hosptial");
loc.appendtoInfoText("Koerner Pavillion");
loc.appendtoInfoText("Pathology Department");
loc.appendtoInfoText("Psychiatry Department");
loc.appendtoInfoText("Rehabilitation Medicine");
loc.appendtoInfoText("School of Nursing");
loc.appendtoInfoText("Student Health Services");
p = new Polygon();
p.addPoint(297, 155);
p.addPoint(303, 155);
p.addPoint(303, 163);
p.addPoint(310, 163);
p.addPoint(310, 156);
p.addPoint(315, 156);
p.addPoint(315, 163);
p.addPoint(320, 162);
p.addPoint(320, 168);
p.addPoint(317, 168);
p.addPoint(317, 183);
p.addPoint(296, 184);
p.addPoint(296, 168);
p.addPoint(292, 168);
p.addPoint(292, 163);
p.addPoint(293, 163);
p.addPoint(294, 158);
p.addPoint(297, 158);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Library Processing Center ----------------------------
loc = new Building(this, new Point(284, 208));
loc.setName("Library Processing Center");
loc.setURL("http://www.library.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Library Processing Center\n"+
" 2206 East Mall\n");
p = new Polygon();
p.addPoint(280, 203);
p.addPoint(289, 203);
p.addPoint(289, 212);
p.addPoint(286, 212);
p.addPoint(286, 213);
p.addPoint(280, 213);
p.addPoint(280, 205);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Cunningham (Pharmacy) ----------------------------
loc = new Building(this, new Point(267, 207));
loc.setName("Cunningham (Pharmacy)");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Cunningham Building (Pharmacy)\n"+
" 2146 East Mall\n");
p = new Polygon();
p.addPoint(265, 200);
p.addPoint(273, 200);
p.addPoint(273, 203);
p.addPoint(269, 203);
p.addPoint(269, 214);
p.addPoint(266, 214);
p.addPoint(266, 213);
p.addPoint(263, 213);
p.addPoint(263, 211);
p.addPoint(265, 211);
p.addPoint(265, 200);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Wesbrook (Life Sciences) ----------------------------
loc = new Building(this, new Point(252, 208));
loc.setName("Wesbrook Building");
loc.setURL("http://www.science.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Wesbrook Building\n"+
" 6174 University Blvd\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Biotechnology Lab");
loc.appendtoInfoText("Medical Genetics Department");
loc.appendtoInfoText("Center for Molecular Genetics");
loc.appendtoInfoText("Microbiology Department");
p = new Polygon();
p.addPoint(250, 193);
p.addPoint(254, 197);
p.addPoint(250, 206);
p.addPoint(258, 199);
p.addPoint(261, 202);
p.addPoint(254, 210);
p.addPoint(263, 210);
p.addPoint(263, 214);
p.addPoint(251, 214);
p.addPoint(246, 206);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Biomedical Research Center ----------------------------
loc = new Building(this, new Point(295, 190));
loc.setName("Biomedical Research Center");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Biomedical Research Center\n"+
" 2222 Health Sciences Mall\n");
p = new Polygon();
p.addPoint(298, 184);
p.addPoint(300, 184);
p.addPoint(300, 190);
p.addPoint(302, 190);
p.addPoint(302, 195);
p.addPoint(292, 195);
p.addPoint(292, 186);
p.addPoint(298, 186);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Purdy Pavillion Extended Care Hospital ----------------------------
loc = new Building(this, new Point(327, 182));
loc.setName("Extended Care Hospital");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Purdy Pavillion Extended Care Hospital\n"+
" 2221 Wesbrook Mall\n");
p = new Polygon();
p.addPoint(325, 170);
p.addPoint(327, 170);
p.addPoint(327, 172);
p.addPoint(331, 172);
p.addPoint(331, 173);
p.addPoint(333, 173);
p.addPoint(333, 176);
p.addPoint(331, 176);
p.addPoint(331, 186);
p.addPoint(332, 186);
p.addPoint(332, 189);
p.addPoint(331, 189);
p.addPoint(331, 192);
p.addPoint(325, 192);
p.addPoint(325, 189);
p.addPoint(322, 189);
p.addPoint(322, 183);
p.addPoint(320, 183);
p.addPoint(320, 179);
p.addPoint(325, 179);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Detwiller Pavillion Psychiatric Hospital ----------------------------
loc = new Building(this, new Point(130, 152));
loc.setName("Psychiatric Hospital");
loc.setURL("http://www.med.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Detwiller Pavillion Psychiatric Hospital\n"+
" 2255 Wesbrook Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Neurological Sciences");
p = new Polygon();
p.addPoint(334, 141);
p.addPoint(339, 141);
p.addPoint(339, 155);
p.addPoint(338, 155);
p.addPoint(338, 163);
p.addPoint(334, 163);
p.addPoint(334, 156);
p.addPoint(328, 156);
p.addPoint(328, 159);
p.addPoint(331, 159);
p.addPoint(331, 163);
p.addPoint(324, 163);
p.addPoint(324, 156);
p.addPoint(322, 156);
p.addPoint(322, 150);
p.addPoint(325, 150);
p.addPoint(325, 148);
p.addPoint(327, 148);
p.addPoint(327, 150);
p.addPoint(332, 150);
p.addPoint(332, 146);
p.addPoint(334, 146);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// General Services Administration Building ----------------------------
loc = new Building(this, new Point(230, 140));
loc.setName("General Services Administration Building");
loc.initKeywords();
loc.setInfoText("General Services Administration Building,\n"+
"2075 Wesbrook Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Admissions Office");
loc.appendtoInfoText("Financial Services");
loc.appendtoInfoText("Personnel Office");
p = new Polygon();
p.addPoint(229, 138);
p.addPoint(246, 138);
p.addPoint(246, 148);
p.addPoint(239, 148);
p.addPoint(239, 145);
p.addPoint(236, 145);
p.addPoint(236, 148);
p.addPoint(229, 148);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Computer Science ----------------------------
loc = new Building(this, new Point(345, 255));
loc.setName("CICSR Building");
loc.setURL("http://www.cs.ubc.ca");
loc.initKeywords();
loc.setInfoText("CICSR Building\n"+
"2366 Main Mall,\n"+
"Vancouver, British Columbia,\n"+
"Canada V6T 1Z1\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Center for Integrated Computer Systems Research");
loc.appendtoInfoText("Computer Science Department");
loc.appendtoInfoText("Computer Science Library");
p = new Polygon();
p.addPoint(345, 255);
p.addPoint(360, 255);
p.addPoint(360, 265);
p.addPoint(345, 265);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Main Library ----------------------------
loc = new Building(this, new Point(170,235));
loc.setName("Main Library");
loc.setURL("http://www.library.ubc.ca");
loc.initKeywords();
loc.setInfoText("Main Library\n"+
"1956 East Mall,\n"+
"Vancouver, British Columbia,\n"+
"Canada \n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Library Circulation");
loc.appendtoInfoText("Data Library");
loc.appendtoInfoText("Special Collections");
p = new Polygon();
p.addPoint(163, 226);
p.addPoint(181, 226);
p.addPoint(181, 230);
p.addPoint(185, 230);
p.addPoint(185, 237);
p.addPoint(179, 237);
p.addPoint(180, 239);
p.addPoint(176, 239);
p.addPoint(176, 241);
p.addPoint(169, 242);
p.addPoint(169, 239);
p.addPoint(165, 239);
p.addPoint(165, 237);
p.addPoint(159, 237);
p.addPoint(159, 234);
p.addPoint(163, 234);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Book Store --------------------------------------------------
loc = new Building(this, new Point(242,225));
loc.setName("Bookstore");
loc.setURL("http://www.bookstore.ubc.ca");
loc.initKeywords();
loc.setInfoText("Bookstore\n"+
"6200 University Blvd,\n"+
"Vancouver, British Columbia,\n"+
"Canada \n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Oceanography Department");
loc.appendtoInfoText("NCE Labs");
loc.appendtoInfoText("Bookstore");
loc.appendtoInfoText("Computer shop");
loc.appendtoInfoText("Post Office");
loc.addKeyword("Payphone");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(243, 226);
p.addPoint(255, 227);
p.addPoint(255, 226);
p.addPoint(264, 225);
p.addPoint(265, 227);
p.addPoint(262, 231);
p.addPoint(262, 233);
p.addPoint(261, 234);
p.addPoint(261, 236);
p.addPoint(253, 237);
p.addPoint(253, 238);
p.addPoint(251, 238);
p.addPoint(251, 237);
p.addPoint(246, 237);
p.addPoint(246, 235);
p.addPoint(242, 235);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Biological Sciences Building-----------------------------------
loc = new Building(this, new Point(241,245));
loc.setName("Biological Sciences Building");
loc.setURL("http://www.science.ubc.ca");
loc.setInfoText("Biological Sciences Building\n"+
"6270 University Blvd,\n"+
"\n Contains:\n"+
"Faculty of Science");
loc.initKeywords();
loc.addKeyword("Faculty of Science");
loc.addKeyword("Dean of Science");
p = new Polygon();
p.addPoint(239, 242);
p.addPoint(243, 242);
p.addPoint(243, 249);
p.addPoint(249, 249);
p.addPoint(249, 243);
p.addPoint(254, 243);
p.addPoint(254, 249);
p.addPoint(256, 251);
p.addPoint(258, 250);
p.addPoint(258, 243);
p.addPoint(266, 242);
p.addPoint(266, 245);
p.addPoint(264, 245);
p.addPoint(264, 261);
p.addPoint(267, 260);
p.addPoint(267, 265);
p.addPoint(244, 265);
p.addPoint(239, 260);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Scarfe Building-----------------------------------
loc = new Building(this, new Point(240,285));
loc.setName("Scarfe Building");
loc.setURL("http://www.educ.ubc.ca");
loc.initKeywords();
loc.setInfoText("Scarfe Building\n"+
"2125 Main Mall,\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Dean of Education");
loc.appendtoInfoText("Education Library/Curriculum Laboratory");
loc.appendtoInfoText("Faculty of Education");
p = new Polygon();
p.addPoint(237, 280);
p.addPoint(243, 280);
p.addPoint(244, 282);
p.addPoint(247, 281);
p.addPoint(247, 278);
p.addPoint(252, 278);
p.addPoint(251, 282);
p.addPoint(258, 281);
p.addPoint(259, 277);
p.addPoint(262, 278);
p.addPoint(261, 289);
p.addPoint(257, 290);
p.addPoint(257, 288);
p.addPoint(255, 292);
p.addPoint(250, 294);
p.addPoint(250, 289);
p.addPoint(244, 289);
p.addPoint(243, 296);
p.addPoint(237, 296);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Geophysics Building ----------------------------
loc = new Building(this, new Point(290,284));
loc.setName("Geophysics Building");
loc.setURL("http://www.geop.ubc.ca");
loc.setInfoText("Geophysics Building\n"+
"2219 Main Mall,\n"+
"\n Contains:\n"+
"Geophysics and Astronomy Department");
loc.initKeywords();
loc.addKeyword("Geophysics Building");
loc.addKeyword("Geophysics and Astronomy Department");
loc.addKeyword("Astronomical Observatory");
p = new Polygon();
p.addPoint(281, 282);
p.addPoint(287, 282);
p.addPoint(287, 280);
p.addPoint(294, 280);
p.addPoint(294, 282);
p.addPoint(300, 282);
p.addPoint(299, 286);
p.addPoint(281, 286);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Geological Sciences Building ----------------------------
loc = new Building(this, new Point(285,295));
loc.setName("Geological Sciences Building");
loc.setURL("http://www.geology.ubc.ca");
loc.setInfoText("Geological Sciences Building\n"+
"6339 Stores Road,\n"+
"\n Contains:\n"+
"Geological Sciences Department\n"+
"Geological Museum (M.Y Williams)\n");
loc.initKeywords();
loc.addKeyword("Geological Sciences Building");
loc.addKeyword("Geological Sciences Department");
loc.addKeyword("Geological Museum (M.Y Williams)");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(281, 290);
p.addPoint(290, 290);
p.addPoint(290, 295);
p.addPoint(294, 294);
p.addPoint(294, 297);
p.addPoint(302, 296);
p.addPoint(302, 301);
p.addPoint(298, 302);
p.addPoint(298, 298);
p.addPoint(294, 298);
p.addPoint(294, 303);
p.addPoint(281, 303);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Ponderosa Building ----------------------------
loc = new Building(this, new Point(220, 330));
loc.setName("Ponderosa Building");
loc.initKeywords();
loc.setInfoText("Ponderosa Building,\n"+
"2071 West Mall,\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Food Services Department");
loc.appendtoInfoText("Ponderosa Cafeteria");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(216, 325);
p.addPoint(226, 325);
p.addPoint(226, 335);
p.addPoint(216, 335);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Campus Planning and Development ----------------------------
loc = new Building(this, new Point(290,313));
loc.setName("Campus Planning and Development");
loc.setURL("http://www.cpd.ubc.ca");
loc.setInfoText("Campus Planning and Development\n"+
"2210 West Mall,\n");
loc.initKeywords();
loc.addKeyword("Campus Planning and Development");
p = new Polygon();
p.addPoint(286, 310);
p.addPoint(297, 310);
p.addPoint(297, 315);
p.addPoint(286, 315);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Kenny Building (Psychology) ----------------------------
loc = new Building(this, new Point(255,305));
loc.setName("Kenny Building");
loc.setURL("http://www.psych.ubc.ca");
loc.setInfoText("Douglas T. Kenny Building\n"+
"2136 West Mall,\n"+
"\n Contains:\n"+
"Psychology Department\n");
loc.initKeywords();
loc.addKeyword("Douglas T. Kenny Building");
loc.addKeyword("Psychology Department");
p = new Polygon();
p.addPoint(250, 303);
p.addPoint(264, 303);
p.addPoint(264, 311);
p.addPoint(266, 311);
p.addPoint(266, 315);
p.addPoint(252, 315);
p.addPoint(252, 312);
p.addPoint(247, 312);
p.addPoint(247, 309);
p.addPoint(250, 309);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Power House ----------------------------
loc = new Building(this, new Point(202,300));
loc.setName("Power House");
loc.initKeywords();
loc.setInfoText("Power House\n"+
"2040 West Mall\n");
p = new Polygon();
p.addPoint(200, 291);
p.addPoint(209, 291);
p.addPoint(209, 299);
p.addPoint(210, 299);
p.addPoint(210, 305);
p.addPoint(205, 305);
p.addPoint(205, 296);
p.addPoint(200, 296);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Social Work ----------------------------
loc = new Building(this, new Point(220,310));
loc.setName("Social Work");
loc.setURL("http://www.arts.ubc.ca/arts/social/social.html");
loc.initKeywords();
loc.setInfoText("Social Work\n"+
"2080 West Mall\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("School of Social Work");
p = new Polygon();
p.addPoint(217, 310);
p.addPoint(227, 310);
p.addPoint(227, 313);
p.addPoint(217, 313);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Arts One Office ----------------------------
loc = new Building(this, new Point(245,303));
loc.setName("Arts One");
loc.setURL("http://www.arts.ubc.ca/arts/arts1/arts1.htm");
loc.setInfoText("Arts One General Office\n"+
"6358 University Blvd");
loc.initKeywords();
loc.addKeyword("Arts One General Office");
p = new Polygon();
p.addPoint(242, 300);
p.addPoint(248, 300);
p.addPoint(248, 304);
p.addPoint(245, 304);
p.addPoint(245, 306);
p.addPoint(242, 306);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// West Parkade ----------------------------
loc = new Building(this, new Point(260,330));
loc.setName("West Parkade");
loc.setURL("http://www.interchg.ubc.ca/pass/");
loc.setInfoText("West Parkade\n"+
"2150 Lower Mall");
loc.initKeywords();
loc.addKeyword("West Parkade");
loc.addKeyword("Parking");
loc.addKeyword("Public Parking");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(256, 325);
p.addPoint(262, 325);
p.addPoint(262, 323);
p.addPoint(270, 323);
p.addPoint(270, 326);
p.addPoint(276, 326);
p.addPoint(276, 335);
p.addPoint(278, 335);
p.addPoint(278, 344);
p.addPoint(272, 344);
p.addPoint(272, 345);
p.addPoint(262, 345);
p.addPoint(262, 343);
p.addPoint(254, 343);
p.addPoint(254, 333);
p.addPoint(256, 333);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// North Parkade ----------------------------
loc = new Building(this, new Point(145,175));
loc.setName("North Parkade");
loc.setURL("http://www.interchg.ubc.ca/pass/");
loc.setInfoText("North Parkade\n"+
"6150 Student Union Blvd");
loc.initKeywords();
loc.addKeyword("North Parkade");
loc.addKeyword("Parking");
loc.addKeyword("Public Parking");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(141, 174);
p.addPoint(160, 174);
p.addPoint(160, 177);
p.addPoint(162, 177);
p.addPoint(162, 185);
p.addPoint(163, 185);
p.addPoint(163, 191);
p.addPoint(162, 191);
p.addPoint(162, 193);
p.addPoint(145, 193);
p.addPoint(145, 191);
p.addPoint(143, 191);
p.addPoint(143, 184);
p.addPoint(141, 184);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Fraser River Parkade ----------------------------
loc = new Building(this, new Point(155,330));
loc.setName("Fraser River Parkade");
loc.setURL("http://www.interchg.ubc.ca/pass/");
loc.setInfoText("Fraser River Parkade\n"+
"1900 Lower Mall");
loc.initKeywords();
loc.addKeyword("Fraser River Parkade");
loc.addKeyword("Parking");
loc.addKeyword("Public Parking");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(153, 327);
p.addPoint(167, 327);
p.addPoint(166, 331);
p.addPoint(168, 331);
p.addPoint(168, 347);
p.addPoint(153, 347);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Health Sciences Parkade ----------------------------
loc = new Building(this, new Point(300,205));
loc.setName("Health Sciences Parkade");
loc.setURL("http://www.interchg.ubc.ca/pass/");
loc.setInfoText("Health Sciences Parkade\n"+
"2300 Health Sciences Mall");
loc.initKeywords();
loc.addKeyword("Health Sciences Parkade");
loc.addKeyword("Parking");
loc.addKeyword("Public Parking");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(295, 202);
p.addPoint(320, 202);
p.addPoint(320, 217);
p.addPoint(295, 217);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// University Services Building ----------------------------
loc = new Building(this, new Point(295,330));
loc.setName("University Services Building");
loc.setURL("http://www.plantops.ubc.ca");
loc.setInfoText("University Services Building\n"+
"2329 West Mall,\n"+
"\n Contains:\n"+
"Plant Operations\n"+
"Media Services\n"+
"Language Institute");
loc.initKeywords();
loc.addKeyword("University Services Building");
loc.addKeyword("Plant Operations");
loc.addKeyword("Media Services");
loc.addKeyword("Language Institute");
p = new Polygon();
p.addPoint(290, 327);
p.addPoint(298, 327);
p.addPoint(298, 330);
p.addPoint(302, 330);
p.addPoint(302, 328);
p.addPoint(315, 328);
p.addPoint(315, 330);
p.addPoint(318, 330);
p.addPoint(318, 327);
p.addPoint(327, 327);
p.addPoint(327, 340);
p.addPoint(317, 340);
p.addPoint(317, 339);
p.addPoint(299, 339);
p.addPoint(299, 342);
p.addPoint(290, 342);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Bus Loop --------------------------------------------------
loc = new Building(this, new Point(230,200));
loc.setName("Bus Loop");
loc.setURL("http://view.ubc.ca/1/admin-and-campus/bus-schedules");
loc.setInfoText("BC Transit UBC Bus Loop\n"+
"6100 block,\n"+
"University Blvd,\n");
loc.initKeywords();
loc.addKeyword("Bus Loop");
loc.addKeyword("Bus Stop");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(228,197);
p.addPoint(240,197);
p.addPoint(235,216);
p.addPoint(231,215);
p.addPoint(225,212);
p.addPoint(223,210);
p.addPoint(225,205);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Graduate Student Center -------------------------------------------
loc = new Building(this, new Point(100,295));
loc.setName("Thea Koerner House");
loc.setURL("http://www.gss.ubc.ca/");
loc.setInfoText("Thea Koerner House\n"+
"Grad Student Center");
loc.initKeywords();
loc.addKeyword("Thea Koerner House");
loc.addKeyword("Grad Student Center");
loc.addKeyword("Garden Lounge");
loc.addKeyword("Fireside Lounge");
loc.addKeyword("Payphone");
loc.addKeyword("Graduate Student Society");
p = new Polygon();
p.addPoint(100,295);
p.addPoint(105,295);
p.addPoint(105,305);
p.addPoint(100,305);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Graduate Student Center --------------------------------------------
loc = new Building(this, new Point(105,300));
loc.setName("Faculty of Graduate Studies");
loc.setURL("http://www.grad.ubc.ca/");
loc.setInfoText("Faculty of Graduate Studies\n"+
"6371 Crescent Road,\n"+
"University of British Columbia");
loc.initKeywords();
loc.addKeyword("Graduate Studies");
loc.addKeyword("Dean of Graduate Studies");
p = new Polygon();
p.addPoint(105,300);
p.addPoint(115,300);
p.addPoint(115,310);
p.addPoint(105,310);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Asian Center --------------------------------------------------
loc = new Building(this,140, 340);
loc.setDisplayable(true);
loc.initKeywords();
loc.setName("Asian Center");
loc.setInfoText("Asian Center\n"+
"1871 West Mall,\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Asian Studies Department");
loc.appendtoInfoText("Asian Studies Library");
loc.appendtoInfoText("Institute of Asian Research");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(134, 334);
p.addPoint(144, 334);
p.addPoint(144, 346);
p.addPoint(134, 346);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Museum of Anthropology --------------------------------------------------
loc = new Building(this,67, 315);
loc.initKeywords();
loc.setName("Museum of Anthropology");
loc.setInfoText("Museum of Anthropology\n"+
"6393 Northwest Marine Drive");
loc.addKeyword("Public Attraction");
loc.addKeyword("Payphone");
p = new Polygon();
p.addPoint(64, 297);
p.addPoint(79, 318);
p.addPoint(77, 319);
p.addPoint(82, 325);
p.addPoint(80, 327);
p.addPoint(80, 329);
p.addPoint(78, 331);
p.addPoint(75, 327);
p.addPoint(72, 331);
p.addPoint(70, 331);
p.addPoint(69, 330);
p.addPoint(66, 331);
p.addPoint(63, 329);
p.addPoint(63, 323);
p.addPoint(59, 317);
p.addPoint(59, 314);
p.addPoint(58, 313);
p.addPoint(60, 312);
p.addPoint(58, 311);
p.addPoint(60, 310);
p.addPoint(59, 308);
p.addPoint(62, 304);
p.addPoint(60, 301);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Nitobe gardens --------------------------------------------------
loc = new Park(this,120, 350);
loc.setName("Nitobe Memorial Garden");
loc.initKeywords();
loc.setInfoText("Nitobe Memorial Garden,\n"+
"A classical Japanese Garden");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(117, 351);
p.addPoint(156, 351);
p.addPoint(156, 383);
p.addPoint(150, 378);
p.addPoint(146, 375);
p.addPoint(143, 374);
p.addPoint(139, 371);
p.addPoint(136, 369);
p.addPoint(131, 366);
p.addPoint(128, 363);
p.addPoint(124, 359);
p.addPoint(123, 357);
p.addPoint(121, 355);
p.addPoint(118, 352);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Asian Garden --------------------------------------------------
loc = new Park(this,500, 375);
loc.setName("Asian Garden");
loc.initKeywords();
loc.addKeyword("Asian Garden");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(494, 369);
p.addPoint(503, 367);
p.addPoint(518, 365);
p.addPoint(532, 364);
p.addPoint(548, 361);
p.addPoint(561, 357);
p.addPoint(576, 352);
p.addPoint(582, 349);
p.addPoint(583, 348);
p.addPoint(583, 386);
p.addPoint(576, 388);
p.addPoint(563, 391);
p.addPoint(549, 394);
p.addPoint(526, 398);
p.addPoint(507, 401);
p.addPoint(493, 403);
p.addPoint(488, 403);
p.addPoint(485, 402);
p.addPoint(482, 400);
p.addPoint(482, 396);
p.addPoint(485, 390);
p.addPoint(491, 382);
p.addPoint(496, 373);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Botanical Garden --------------------------------------------------
loc = new Park(this,510, 300);
loc.setName("Botanical Garden");
loc.initKeywords();
loc.addKeyword("Botanical Garden");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(511, 300);
p.addPoint(513, 302);
p.addPoint(517, 305);
p.addPoint(522, 308);
p.addPoint(530, 309);
p.addPoint(538, 308);
p.addPoint(543, 305);
p.addPoint(547, 300);
p.addPoint(549, 297);
p.addPoint(554, 294);
p.addPoint(559, 292);
p.addPoint(564, 291);
p.addPoint(569, 291);
p.addPoint(569, 333);
p.addPoint(569, 335);
p.addPoint(567, 338);
p.addPoint(565, 341);
p.addPoint(562, 343);
p.addPoint(558, 346);
p.addPoint(553, 348);
p.addPoint(547, 351);
p.addPoint(536, 353);
p.addPoint(527, 354);
p.addPoint(517, 354);
p.addPoint(512, 352);
p.addPoint(509, 352);
p.addPoint(504, 349);
p.addPoint(502, 346);
p.addPoint(500, 342);
p.addPoint(499, 339);
p.addPoint(501, 338);
p.addPoint(504, 336);
p.addPoint(506, 335);
p.addPoint(508, 332);
p.addPoint(508, 327);
p.addPoint(508, 317);
p.addPoint(509, 306);
p.addPoint(510, 303);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Rose Garden --------------------------------------------------
loc = new Park(this,100, 265);
loc.setName("Rose Garden");
loc.initKeywords();
loc.addKeyword("Rose Garden");
loc.addKeyword("Public Attraction");
p = new Polygon();
p.addPoint(93, 261);
p.addPoint(103, 261);
p.addPoint(105, 262);
p.addPoint(106, 273);
p.addPoint(104, 272);
p.addPoint(93, 271);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Rose Garden Parkade ----------------------------------------------
loc = new Building(this,100, 265);
loc.setName("Rose Garden Parkade");
loc.setURL("http://www.interchg.ubc.ca/pass/");
loc.setInfoText("Rose Garden Underground Parkade\n"+
"6200 Crescent Road");
loc.initKeywords();
loc.addKeyword("Rose Garden Parkade");
loc.addKeyword("Visitor Parking");
p = new Polygon();
p.addPoint(87, 260);
p.addPoint(93, 261);
p.addPoint(93, 271);
p.addPoint(87, 271);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Forintek Building ----------------------------
loc = new Building(this, new Point(480, 235));
loc.setName("Forintek Building");
loc.initKeywords();
loc.setInfoText("Forintek Building,\n"+
"2665 East Mall,\n");
p = new Polygon();
p.addPoint(476, 232);
p.addPoint(484, 232);
p.addPoint(484, 235);
p.addPoint(490, 235);
p.addPoint(490, 233);
p.addPoint(492, 233);
p.addPoint(492, 235);
p.addPoint(500, 234);
p.addPoint(501, 248);
p.addPoint(491, 248);
p.addPoint(491, 250);
p.addPoint(490, 250);
p.addPoint(489, 248);
p.addPoint(476, 248);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Family and Nutritional Sciences ----------------------------
loc = new Building(this, new Point(275, 230));
loc.setName("Family & Nut'l Sciences Building");
loc.initKeywords();
loc.setInfoText("Family & Nut'l Sciences Building,\n"+
"2205 East Mall");
p = new Polygon();
p.addPoint(272, 227);
p.addPoint(282, 227);
p.addPoint(282, 234);
p.addPoint(278, 234);
p.addPoint(279, 232);
p.addPoint(277, 232);
p.addPoint(277, 241);
p.addPoint(272, 241);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Fisheries Center ----------------------------
loc = new Building(this, new Point(282,263));
loc.setName("Fisheries Center");
loc.initKeywords();
loc.setInfoText("Fisheries Center,\n"+
"2204 Main Mall\n");
p = new Polygon();
p.addPoint(277, 257);
p.addPoint(287, 257);
p.addPoint(287, 266);
p.addPoint(277, 266);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Chemical Engineering ----------------------------
loc = new Building(this, new Point(290,240));
loc.setName("Chemical Engineering");
loc.setURL("http://www.apsc.ubc.ca/cgi-win/apscweb.exe/d/chml");
loc.initKeywords();
loc.setInfoText("Chemical Engineering Building,\n"+
"2216 Main Mall\n");
p = new Polygon();
p.addPoint(288, 237);
p.addPoint(293, 237);
p.addPoint(293, 251);
p.addPoint(288, 252);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Civil and Mechanical Engineering Lab ----------------------------
loc = new Building(this, new Point(300,230));
loc.setName("Civil/Mechanical Eng. Lab");
loc.setURL("http://www.apsc.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Civil/Mechanical Engineering Lab,\n"+
"2246 Main Mall");
p = new Polygon();
p.addPoint(298, 225);
p.addPoint(303, 225);
p.addPoint(302, 227);
p.addPoint(305, 227);
p.addPoint(305, 252);
p.addPoint(297, 252);
p.addPoint(297, 234);
p.addPoint(290, 234);
p.addPoint(290, 229);
p.addPoint(295, 229);
p.addPoint(298, 230);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Civil and Mechanical Engineering ----------------------------
loc = new Building(this, new Point(315,230));
loc.setName("Civil & Mechanical Engineering");
loc.setURL("http://www.civil.ubc.ca/");
loc.initKeywords();
loc.setInfoText("Civil and Mechanical Engineering Building,\n"+
"2246 Main Mall,\n"+
"\n Contains:\n\n");
loc.appendtoInfoText("Civil Engineering Department");
loc.appendtoInfoText("Faculty of Applied Science");
loc.appendtoInfoText("Mechanical Engineering Department");
p = new Polygon();
p.addPoint(310, 226);
p.addPoint(326, 226);
p.addPoint(326, 229);
p.addPoint(324, 229);
p.addPoint(324, 232);
p.addPoint(317, 232);
p.addPoint(317, 240);
p.addPoint(331, 240);
p.addPoint(331, 246);
p.addPoint(316, 246);
p.addPoint(316, 265);
p.addPoint(305, 265);
p.addPoint(305, 262);
p.addPoint(304, 262);
p.addPoint(304, 257);
p.addPoint(314, 257);
p.addPoint(314, 254);
p.addPoint(310, 254);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Pulp and Paper Center ----------------------------
loc = new Building(this, new Point(335,230));
loc.setName("Pulp and Paper Center");
loc.initKeywords();
loc.setInfoText("Pulp and Paper Center,\n"+
"2385 East Mall,\n");
p = new Polygon();
p.addPoint(350, 228);
p.addPoint(353, 228);
p.addPoint(353, 226);
p.addPoint(357, 226);
p.addPoint(357, 228);
p.addPoint(359, 228);
p.addPoint(359, 240);
p.addPoint(352, 240);
p.addPoint(352, 238);
p.addPoint(350, 238);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
/*======================================================================
ROADS & THINGS
======================================================================*/
// B-lot 1 --------------------------------------------------
loc = new Road(this, 370, 145);
loc.setDisplayable(true);
loc.setName("B-1 Lot");
loc.initKeywords();
loc.setInfoText("B-1 Parking Lot");
loc.addKeyword("Public Parking");
p = new Polygon();
p.addPoint(365, 139);
p.addPoint(387, 140);
p.addPoint(387, 178);
p.addPoint(378, 178);
p.addPoint(378, 195);
p.addPoint(365, 195);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// B-lot 4 --------------------------------------------------
loc = new Road(this, 370, 280);
loc.setDisplayable(true);
loc.setName("B-4 Lot");
loc.initKeywords();
loc.setInfoText("B-4 Parking Lot");
loc.addKeyword("Public Parking");
p = new Polygon();
p.addPoint(363, 275);
p.addPoint(378, 275);
p.addPoint(378, 295);
p.addPoint(364, 295);
p.addPoint(364, 293);
p.addPoint(366, 293);
p.addPoint(366, 277);
p.addPoint(362, 277);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// B-lot 5 --------------------------------------------------
loc = new Road(this, 410, 235);
loc.setDisplayable(true);
loc.setName("B-5 Lot");
loc.initKeywords();
loc.setInfoText("B-5 Parking Lot");
loc.addKeyword("Public Parking");
p = new Polygon();
p.addPoint(406, 230);
p.addPoint(447, 230);
p.addPoint(448, 246);
p.addPoint(450, 246);
p.addPoint(450, 250);
p.addPoint(448, 250);
p.addPoint(448, 266);
p.addPoint(405, 266);
p.addPoint(406, 250);
p.addPoint(402, 250);
p.addPoint(402, 247);
p.addPoint(406, 247);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// B-lot 6 --------------------------------------------------
loc = new Road(this, 405, 285);
loc.setDisplayable(true);
loc.setName("B-6 Lot");
loc.initKeywords();
loc.setInfoText("B-6 Parking Lot");
loc.addKeyword("Public Parking");
p = new Polygon();
p.addPoint(404, 286);
p.addPoint(424, 286);
p.addPoint(424, 274);
p.addPoint(449, 274);
p.addPoint(449, 301);
p.addPoint(449, 313);
p.addPoint(416, 313);
p.addPoint(416, 315);
p.addPoint(405, 315);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// B-lot 7 --------------------------------------------------
loc = new Road(this, 460, 300);
loc.setDisplayable(true);
loc.setName("B-7 Lot");
loc.initKeywords();
loc.setInfoText("B-7 Parking Lot");
loc.addKeyword("Public Parking");
p = new Polygon();
p.addPoint(455, 297);
p.addPoint(488, 297);
p.addPoint(488, 288);
p.addPoint(500, 287);
p.addPoint(500, 299);
p.addPoint(487, 309);
p.addPoint(455, 309);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Agricultural road --------------------------------------------------
loc = new Road(this, 187, 225);
loc.setDisplayable(true);
loc.setName("Agricultural Road");
loc.initKeywords();
loc.addKeyword("Agricultural Road");
p = new Polygon();
p.addPoint(187,225);
p.addPoint(192,225);
p.addPoint(192,315);
p.addPoint(187,315);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Mathematics Road --------------------------------------------------
loc = new Road(this, 165, 300);
loc.setDisplayable(true);
loc.setName("Mathematics Road");
loc.initKeywords();
loc.addKeyword("Mathematics Road");
p = new Polygon();
p.addPoint(163, 300);
p.addPoint(190, 300);
p.addPoint(190, 303);
p.addPoint(163, 303);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// East Mall --------------------------------------------------
loc = new Road(this, 95, 218);
loc.setDisplayable(true);
loc.setName("East Mall");
loc.initKeywords();
loc.addKeyword("East Mall");
p = new Polygon();
p.addPoint(95, 218);
p.addPoint(360, 218);
p.addPoint(360,224);
p.addPoint(95, 224);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Main Mall --------------------------------------------------
loc = new Road(this, 115, 265);
loc.setDisplayable(true);
loc.setName("Main Mall");
loc.initKeywords();
loc.addKeyword("Main Mall");
p = new Polygon();
p.addPoint(115, 266);
p.addPoint(360, 266);
p.addPoint(360, 274);
p.addPoint(115, 274);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// West Mall --------------------------------------------------
loc = new Road(this, 187, 225);
loc.setDisplayable(true);
loc.setName("West Mall");
loc.initKeywords();
loc.addKeyword("West Mall");
p = new Polygon();
p.addPoint(110, 314);
p.addPoint(285, 315);
p.addPoint(303, 322);
p.addPoint(345, 322);
p.addPoint(352, 319);
p.addPoint(398, 319);
p.addPoint(404, 317);
p.addPoint(476, 316);
p.addPoint(485, 318);
p.addPoint(492, 325);
p.addPoint(496, 332);
p.addPoint(498, 340);
p.addPoint(500, 346);
p.addPoint(491, 346);
p.addPoint(489, 336);
p.addPoint(487, 331);
p.addPoint(484, 328);
p.addPoint(477, 324);
p.addPoint(468, 324);
p.addPoint(400, 323);
p.addPoint(395, 323);
p.addPoint(353, 322);
p.addPoint(348, 325);
p.addPoint(301, 326);
p.addPoint(286, 318);
p.addPoint(151, 318);
p.addPoint(146, 316);
p.addPoint(110, 317);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
// Note: this must go after Main mall, since the region overlaps -
// the building is underground.
// Sedgewick Undergraduate Library ----------------------------
loc = new Building(this, new Point(155, 265));
loc.setDisplayable(true);
loc.setName("Sedgewick Library");
loc.setURL("http://www.library.ubc.ca");
loc.initKeywords();
loc.setInfoText("Sedgewick Library,\n"+
"1958 Main Mall,\n" +
"(Underground)\n" +
"\n Contains:\n\n");
loc.appendtoInfoText("Wilson Recording Library");
loc.addKeyword("Cafeteria");
p = new Polygon();
p.addPoint(156, 264);
p.addPoint(184, 264);
p.addPoint(184, 274);
p.addPoint(156, 274);
loc.getRegion().perim = p;
initLocsFromRegion(loc, loc.getRegion());
return true;
}
}