Name: Eventsearcher

(Here is the link to our final project.)

1.Motivation

When we use ticketmaster to search tickets on the website, we are very disappointed to find that ticketmaster does not embed maps into its search results. So if we want to know where the event will be held, we have to copy the address and paste it into the google map searching engine, which is very inconvenient. In addition, ticket master only let us search the events within a specific city area. If there are some interesting events held in our neighboring cities, we will probably miss it. Therefore, we want to create an App that enables the event search geographically, so that we can obtain the events that will be held in a certain radius of our location or in a geographic buffer defined by users.

2. Function

Our webGIS application could achieve the following functions:
(1) Search events of a user-defined category and a period of time.
(2) Search events geographically in either one of the three ways:
a. search events in the city input by users
b. search events that are in a defined distance (e.g. 5 miles) to an address input by users
c. search events in a geographic buffer drawn by users
(3) Display the events on the map with different symbols; show details of the event and link to booking tickets in the pop-up window.

3.How to use it

(1) Define your search method
Select whether to search events by city, address or geographic buffer, and click "Next".

(2) Define your search criteria.
After choosing the search method in step 1, the corresponding interactive pane will display in step 2. If you choose to search by city, and you will be asked to select the state and input the city in step 2; if you choose to search by address, and you will need to input the address (You need to input a concrete address such as "281 W Lane Ave, Columbus, OH"), search distance to that address and select the distance units (including miles and kilometers), but you are also allowed to use your current location as the address (just check the corresponding box); and if you choose to search by geographic buffer, then you will be asked in this step to draw your buffer on the map, just click the "draw" button and draw your buffer!

(3) Select the category and data
In this step, you need to select the category (type) of the events you want to search for, and the date period that the events are held. After that, you click the "search events" button and the events that meet your requirement will display on the map. (The searching process might take some time so please be patient!) . Events of different categories will be displayed using different icons.

(4) Choose the event you are interested in and see detail information
As the events have been displayed on the map, you can click on these events and the pop-up window will show some details about this event, such as the start and end time, location, organizer and detailed description. If you want to go to that event, just click on the "Book it now" link and it will lead you to the Eventbrite website of that event so that you can read other details and book your tickets there!

4.Methodology

(1) Data
The real-time event data is obtained from an Eventbrite API. Once the user input their search criteria, a PHP script will call for data from Eventbrite according to the requirement of the user, and a Javascript will display these event data on the map. The event data updates in real time.
The base-map we use is the Leaflet maps.

(2) Script Structure
Our scripts include:
An html file and several css files: the design of the website.
Geocoding.php: achieve the read and geocode of the address input by users, so that the App could search events based on this address
Query_event.php: to call for data from the Eventbrite API
Locationfilter.js: to geocode the buffer drawn by users for geographic search. The code is revised based on the plugin created by Robert Kajic. Here is the link.
My-leaflet-symbolization.js: combine the search criteria and obtained by the above php and js files, and to display the events on the map according to the input requirements by users

5.Limitations

The first limitation is that the searching speed is not fast enough. But this is because the search by Eventbrite API is a little bit slow. Also, the app is not able to display all the events in the searching results, as there are hundreds of them. This could be solved by display a list showing all the searching results, but we haven't achieved this yet.