Skip to content
This repository has been archived by the owner on Jun 9, 2018. It is now read-only.
Clayton Burlison edited this page Sep 13, 2016 · 18 revisions

Introduction

pinpoint is a project for finding your Mac. Once a location has been found this data is written to disk in a plist format for easy parsing. Although this project is still in the infant stage of its life most features have already made their way into this project:

  • Geocoding lookup to locate your Mac
  • Reverse Geocoding (address lookup)
  • The ability to enable your AirPort adapter if it is turned off
  • Random delay built into the LaunchDaemon so multiple machines don't all checkin a the same time
  • Logging for troubleshooting purposes

pinpoint requires a wireless adapter to obtain location data. On older Macs that did not ship with a wireless adapter this script will exit without enabling Location Services or authorizing Python for lookups. Your Mac does not need to be connected to an active SSID for location data to be found just enabled.

Technologies Used

Apple's CoreLocation

CoreLocation is used by default for both Geocoding lookup requests and reverse lookup requests.

The Core Location framework lets you determine the current location or heading associated with a device. The framework uses the available hardware to determine the user’s position and heading. You use the classes and protocols in this framework to configure and schedule the delivery of location and heading events. You can also use it to define geographic regions and monitor when the user crosses the boundaries of those regions. In iOS, you can also define a region around a Bluetooth beacon.

The CLGeocoder class provides services for converting between a coordinate (specified as a latitude and longitude) and the user-friendly representation of that coordinate. A user-friendly representation of the coordinate typically consists of the street, city, state, and country information corresponding to the given location, but it may also contain a relevant point of interest, landmarks, or other identifying information. A geocoder object is a single-shot object that works with a network-based service to look up placemark information for its specified coordinate value.

Your approximate location is determined using information from local Wi-Fi networks, and is collected by Location Services in a manner that doesn’t personally identify you.

Google's Geocoding API

You have the option of using Google's Google's Geocoding API for reverse address lookup and soon to locate your mac. This API comes with the following limits:

  • 2,500 free requests per day
  • 10 requests per second

However, it comes with the huge benefit of not needing Python to be enabled in Location Services.

Additional information can be found: https://developers.google.com/maps/documentation/geocoding/usage-limits

Clone this wiki locally