Version: 1.2.9
Author: Onur Yıldırım © 2015
Source code licensed under the MIT License.
Please see the Disclaimer and License.
- HTML5 geolocation (by user permission)
- Location by IP (Supported source services: FreeGeoIP, GeoPlugin, WikiMedia)
- Reverse Geocoding (address lookup)
- Full address information (street, town, neighborhood, region, country, country code, postal code, etc...)
- Fallback mechanism (from HTML5-geolocation to IP-geo lookup)
- Supports Google Loader (loads Google Maps dynamically)
- Dynamically creates Google Maps (with marker, info window, auto-adjusted zoom)
- Non-blocking script loading (external sources are loaded on the fly without interrupting page load)
- No library/framework dependencies (such as jQuery, MooTools, etc...)
- Browser Support: IE 9+, Chrome, Safari, Firefox, Opera...
Direct Download:
Full Version 13KB (3.5KB gzipped), Minified Version 4KB (1.8KB gzipped)
Install via Bower:
bower install geolocatorInstall via NPM:
npm install geolocatorSee a live demo here.
Inside the <head> of your HTML:
<script type="text/javascript" src="geolocator.js"></script> <script type="text/javascript"> //The callback function executed when the location is fetched successfully. function onGeoSuccess(location) { console.log(location); } //The callback function executed when the location could not be fetched. function onGeoError(error) { console.log(error); } window.onload = function () { //geolocator.locateByIP(onGeoSuccess, onGeoError, 2, 'map-canvas'); var html5Options = { enableHighAccuracy: true, timeout: 6000, maximumAge: 0 }; geolocator.locate(onGeoSuccess, onGeoError, true, html5Options, 'map-canvas'); }; </script>Also place the line below, inside your <body> if you want to dynamically draw a map (you should also pass the element ID to the corresponding method for the map to be drawn):
<div id="map-canvas" style="width:600px;height:400px"></div>geolocator.js provides 3 useful methods:
Use this method to get the location via HTML5 geolocation.
geolocator.locate( successCallback, [errorCallback], [fallbackToIP], [html5Options], [mapCanvasId] )Parameters:
successCallbackFunction A callback function to be executed when the location is successfully fetched. The recentgeolocator.locationobject is passed to this callback, as the only argument.
errorCallbackFunction (optional, default:null) A callback function to be executed when the location could not be fetched due to an error. The recentPositionErrorobject is passed to this callback, as the only argument.
fallbackToIPBoolean|Number (optional, default:false) Specifies whether geolocator should fallback to IP geo-lookup when HTML5 geolocation is not supported, timeout expired, position is unavailable or permission rejected by the user. A positive integer value will indicate the index of the source ip-geo service (if the value is in range). Booleantruewill set the default ip-geo service index which is1(GeoPlugin). Valid values:0(use FreeGeoIP for ip-geo fallback),1ortrue(use GeoPlugin for ip-geo fallback),2(use Wikimedia for ip-geo fallback),falseor-1ornullor any other value (will disable ip-geo fallback)
html5OptionsObject (optional, default:null) HTML5 geolocation options. e.g.{ enableHighAccuracy: true, timeout: 6000, maximumAge: 0 }
Note: Set thetimeoutvalue to at least5000milliseconds; otherwise this may produce a timeout error (which will fallback to IP geo-lookups if enabled.)
mapCanvasIdString (optional, default:null) HTML element ID for the Google Maps canvas. If set to null, no map is drawn.
Example:
var html5Options = { enableHighAccuracy: true, timeout: 6000, maximumAge: 0 }; geolocator.locate(onGeoSuccess, onGeoError, true, html5Options, 'map-canvas');Use this method to get the location from the user's IP.
geolocator.locateByIP( successCallback, [errorCallback], [ipSourceIndex], [mapCanvasId] )Parameters:
successCallbackFunction A callback function to be executed when the location is successfully fetched. The recentgeolocator.locationobject is passed to this callback, as the only argument.
errorCallbackFunction (optional, default:null) A callback function to be executed when the location could not be fetched due to an error. The recentErrorobject is passed to this callback, as the only argument.
ipGeoSourceIndexInteger (optional, default:0) Indicates the index of the IP geo-lookup service. Valid values:0(FreeGeoIP),1(GeoPlugin),2(Wikimedia)
mapCanvasIdString (optional, default:null) HTML element ID for the Google Maps canvas. If set to null, no map is drawn.
Example:
geolocator.locateByIP(onGeoSuccess, onGeoError, 1, 'map-canvas');Checks whether the type of the given object is HTML5 PositionError and returns a Boolean value.
geolocator.isPositionError( error )Parameters:
errorObject Object to be checked.
##Properties
Provides the recent geo-location information.
Example Output:
{ address: { city: "New York", country: "United States", countryCode: "US", neighborhood: "Williamsburg", postalCode: "11211", region: "New York", street: "Bedford Avenue", streetNumber: "285", town: "Brooklyn" }, coords: { accuracy: 65, altitude: null, altitudeAccuracy: null, heading: null, latitude: 40.714224, longitude: -73.961452, speed: null }, map: { canvas: HTMLDivElement, //DOM element for the map map: Object, //google.maps.Map options: Object, //map options infoWindow: Object, //google.maps.InfoWindow marker: Object //google.maps.Marker }, formattedAddress: "285 Bedford Avenue, Brooklyn, NY 11211, USA", ipGeoSource: null, timestamp: 1360582737790 }version 1.2.9
- Improvement: Added HTTPS secure connection support for IP geo-sources. (Note: GeoPlugin does not support HTTPS. You should use FreeGeoIP or Wikimedia IP sources instead.). (Fixes Issue #11. PR: @iurisilvio,)
version 1.2.8
- Revision: Removed the
sensorparameter from Goole Maps loader, since it's not required anymore. - Revision: Bumped Google Maps version to
3.18. - Revision: Created NPM package.
- Revision: Created Bower package.
version 1.2.6
- Revision: The recent
ErrororPositionError(HTML5) is passed to error callbacks instead ofStringerror message. See updated documentation. Fixes issue #7. (This shouldn't be a breaking-change but do test your app if you decide to upgrade.) - Feature: Added new method:
isPositionError(). - Updated example. (Enable/disable HTML5-to-IP fallback.)
version 1.2.4
- Revision: Source scripts are now automatically removed from DOM after result is received.
- Bug-Fix:
errorCallbackwould not be invoked if IP geo-source service is not available. Fixes issue #6. - Revision: Changed default IP source to GeoPlugin (index:
1); since FreeGeoIP is occasionally down these days.
version 1.2.1
- Added License.
version 1.2.0
- Code optimizations.
- Now loads the latest release version of Google Maps (
3.15).
version 1.1.0
- JSLint compliant code.
- Minor code revisions.
version 0.9.5
- Google has deprecated
google.loader.ClientLocationAPI. As a result; Google (Loader) is removed from IP-Geo Sources. - Indexes changed for IP-Geo sources. New Indexes: FreeGeoIP (0), GeoPlugin (1), Wikimedia (2)
