We initially wanted to make a location-based game with the ESRI API. Our vision was that, when users enter a certain location (which we geofence manually or generate), they would be alerted in the app and start building points for being at that location. We envisioned teams fighting for control of buildings, or a single player environment where the player builds points against some boss or monster. Our app didn't end up getting to that stage, but we built a solid framework with a diverse range of technologies. As it is now, we have an app with applications for new UCR students.

What it does

The app as it now is a map that displays your current location and direction of movement. We've manually geofenced all UCR instructional buildings. If you walk into one of these buildings (which are marked on the map), the app will play an alert tone and update a header which tells you the code of the building as well as the building's full name. A button allows you to recenter the map and full pinch and zoom capabilities are available.

How we built it

We first built a simple app in Android Studio which had a map with no functionality. We then added the current location and direction of movement functionality. Then, we went into the ArcGIS editor and defined the boundaries of each building that we wanted. We then applied the boundaries to a geotrigger service using a script and some intuition. After that, we worked with firebase and heroku to set up a server backend for storing the location. Firebase allowed us to instantly update the displayed building name, adding speed to our app. Our app runs a geotrigger service in the background of the phone, which, when it detects the user has entered the geofence, will send a POST request to our Heroku server URL, which our server (written in node.js) handles and interprets. From the big JSON object that the POST request contains, we parse it and grab the name component which we store in firebase. The Android app constantly listens for changes to database (thanks to the firebase API) and changes the displayed information in the app very quickly.

Challenges we ran into

-issues with the geotrigger service script -gradle not working -json parsing -going outside to test (made testing difficult and time-consuming)

Accomplishments that we're proud of


What we learned

We learned basically every technology that we worked with. Especially new to us was the ArcGIS API which we now know fairly well. Traversing the API references gave us a good understanding of it.

What's next for Orca

We plan to extend the app to meet our original game functionality which we intended.

Share this project: