{"id":15649683,"url":"https://github.com/thorwebdev/google-geoengine","last_synced_at":"2025-08-23T14:36:59.120Z","repository":{"id":77094415,"uuid":"27490877","full_name":"thorwebdev/google-geoEngine","owner":"thorwebdev","description":null,"archived":false,"fork":false,"pushed_at":"2014-12-16T15:08:58.000Z","size":190,"stargazers_count":38,"open_issues_count":0,"forks_count":15,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-08-20T07:52:04.797Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thorwebdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-03T14:28:37.000Z","updated_at":"2023-02-11T12:19:35.000Z","dependencies_parsed_at":"2023-02-27T07:15:51.596Z","dependency_job_id":null,"html_url":"https://github.com/thorwebdev/google-geoEngine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thorwebdev/google-geoEngine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorwebdev%2Fgoogle-geoEngine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorwebdev%2Fgoogle-geoEngine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorwebdev%2Fgoogle-geoEngine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorwebdev%2Fgoogle-geoEngine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thorwebdev","download_url":"https://codeload.github.com/thorwebdev/google-geoEngine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorwebdev%2Fgoogle-geoEngine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271752126,"owners_count":24814750,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T12:30:58.817Z","updated_at":"2025-08-23T14:36:59.086Z","avatar_url":"https://github.com/thorwebdev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scalable geofencing API for Google App Engine\n\nAn architecture proposal for a geofencing API on Google's [App Engine][1] using [Google Cloud Endpoints][3].\nThis API is able to geofence complex polygons at a large throughput using App Engine, Cloud Datastore and Memcache.\nIt uses the [Java Topology Suite][7] to create a spatial index which is stored in Memcache for fast querying access. \nYou can download, build and deploy the project as is using the [Google App Engine Maven plugin][4].\nFor a detailed explanation of the architecture please refer to this [Google Developers Blogpost][8].\n\n## Endpoints\n\n- __add__: Add a fence to a certain group.\n- __buildIndex__: Build the spatial index and write it to Memcache.\n- __getById__: Get a fence's metadata by it's id.\n- __list__: List all fences in a certain group.\n- __point__: Get all fences that contain a certain point.\n- __polygon__: Get all fences that aren't disjoint with a certain polygon.\n- __polyline__: Get all fences that intersect with a certain polyline.\n\n## Test \u0026 Deploy to App Engine\n\n1. Update the value of `application` in `src/main/webapp/WEB-INF/appengine-web.xml` to the app\n   ID you have registered in the App Engine admin console and would\n   like to use to host your instance of this sample.\n\n1. **__Optional step:__** These sub steps are not required but you need this\n   if you want to have auth protected methods.\n\n    2. Update the values in `src/main/java/com/google/appengine/geo/fencing/Constants.java`\n       to reflect the respective client IDs you have registered in the\n       [APIs Console][6]. \n\n    2. You also need to supply the web client ID you have registered\n       in the [APIs Console][4] to your client of choice (web, Android,\n       iOS).\n\n1. Run the application with `mvn appengine:devserver`, and ensure it's\n   running by visiting your local server (by\n   default [localhost:8080][5].)\n\n1. **__Optional step:__** Get the client library with\n\n   `$ mvn appengine:endpoints_get_client_lib`\n\n   It will generate a client library jar file under the\n   `target/endpoints-client-libs/\u003capi-name\u003e/target` directory of your\n   project, as well as install the artifact into your local maven\n   repository.\n   \n   For more information on client libraries see:\n   \n   - [Generating Cleint Libraries][11]\n   - [Client Library for JavaScript][10]\n\n1. Deploy your application to Google App Engine with\n\n   `$ mvn appengine:update`\n   \n   *Please note that you should always first test on the development server since that creates indexes for our datastore queries. Also after the first deployment App Engine takes a while to create the necessary indexes and connections, so if you get errors, just wait for a bit.*\n   \n## Example of using the [JavaScript Google Client Library with this API][10]\n\n- `src/main/webapp/addFence.html` is an example of how to use the Google Maps JavaScript API [Drawing Layer][9] \nto draw fences to the map and store them to your App Engines Datastore using the __add__ endpoint.\n\n- `src/main/webapp/query.html` shows you how to query your API for points, polylines and polygons.\n\nThese examples can also be used to test your API. You should always first test on the devserver (`mvn appengine:devserver`), \nsince this automatically creates indexes that are needed for our Datastore queries.\n\n[1]: https://developers.google.com/appengine\n[2]: http://java.com/en/\n[3]: https://developers.google.com/appengine/docs/java/endpoints/\n[4]: https://developers.google.com/appengine/docs/java/tools/maven\n[5]: http://localhost:8080/\n[6]: https://console.developers.google.com/\n[7]: http://www.vividsolutions.com/jts/JTSHome.htm\n[8]: http://googledevelopers.blogspot.com/2014/12/building-scalable-geofencing-api-on.html\n[9]: https://developers.google.com/maps/documentation/javascript/drawinglayer\n[10]: https://developers.google.com/api-client-library/javascript/start/start-js\n[11]: https://cloud.google.com/appengine/docs/java/endpoints/gen_clients","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorwebdev%2Fgoogle-geoengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthorwebdev%2Fgoogle-geoengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorwebdev%2Fgoogle-geoengine/lists"}