]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Drop the Google Client API-based AJAX geolocation lookup shim -- it fails to ask...
authorBrion Vibber <brion@pobox.com>
Mon, 28 Dec 2009 20:27:28 +0000 (12:27 -0800)
committerBrion Vibber <brion@pobox.com>
Mon, 28 Dec 2009 20:29:01 +0000 (12:29 -0800)
js/geometa.js

index 21deb18852a2102c225af7091bd2d534d56cf201..87e3c99a16dd0c5734356570df7b1dc63394f893 100644 (file)
@@ -1,4 +1,4 @@
-// A shim to implement the W3C Geolocation API Specification using Gears or the Ajax API
+// A shim to implement the W3C Geolocation API Specification using Gears
 if (typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) (function(){
 
 // -- BEGIN GEARS_INIT
@@ -96,122 +96,9 @@ var GearsGeoLocation = (function() {
     };
 });
 
-var AjaxGeoLocation = (function() {
-    // -- PRIVATE
-    var loading = false;
-    var loadGoogleLoader = function() {
-        if (!hasGoogleLoader() && !loading) {
-            loading = true;
-            var s = document.createElement('script');
-            s.src = (document.location.protocol == "https:"?"https://":"http://") + 'www.google.com/jsapi?callback=_google_loader_apiLoaded';
-            s.type = "text/javascript";
-            document.getElementsByTagName('body')[0].appendChild(s);
-        }
-    };
-    
-    var queue = [];
-    var addLocationQueue = function(callback) {
-        queue.push(callback);
-    }
-    
-    var runLocationQueue = function() {
-        if (hasGoogleLoader()) {
-            while (queue.length > 0) {
-                var call = queue.pop();
-                call();
-            }
-        }
-    }
-    
-    window['_google_loader_apiLoaded'] = function() {
-        runLocationQueue();
-    }
-    
-    var hasGoogleLoader = function() {
-        return (window['google'] && google['loader']);
-    }
-    
-    var checkGoogleLoader = function(callback) {
-        if (hasGoogleLoader()) return true;
-
-        addLocationQueue(callback);
-                
-        loadGoogleLoader();
-        
-        return false;
-    };
-    
-    loadGoogleLoader(); // start to load as soon as possible just in case
-    
-    // -- PUBLIC
-    return {
-        shim: true,
-        
-        type: "ClientLocation",
-        
-        lastPosition: null,
-        
-        getCurrentPosition: function(successCallback, errorCallback, options) {
-            var self = this;
-            if (!checkGoogleLoader(function() {
-                self.getCurrentPosition(successCallback, errorCallback, options);
-            })) return;
-            
-            if (google.loader.ClientLocation) {
-                var cl = google.loader.ClientLocation;
-                
-                var position = {
-                    coords: {
-                        latitude: cl.latitude,
-                        longitude: cl.longitude,
-                        altitude: null,
-                        accuracy: 43000, // same as Gears accuracy over wifi?
-                        altitudeAccuracy: null,
-                        heading: null,
-                        speed: null,
-                    },
-                    // extra info that is outside of the bounds of the core API
-                    address: {
-                        city: cl.address.city,
-                        country: cl.address.country,
-                        country_code: cl.address.country_code,
-                        region: cl.address.region
-                    },
-                    timestamp: new Date()
-                };
-
-                successCallback(position);
-                
-                this.lastPosition = position;
-            } else if (errorCallback === "function")  {
-                errorCallback({ code: 3, message: "Using the Google ClientLocation API and it is not able to calculate a location."});
-            }
-        },
-        
-        watchPosition: function(successCallback, errorCallback, options) {
-            this.getCurrentPosition(successCallback, errorCallback, options);
-            
-            var self = this;
-            var watchId = setInterval(function() {
-                self.getCurrentPosition(successCallback, errorCallback, options);
-            }, 10000);
-            
-            return watchId;
-        },
-        
-        clearWatch: function(watchId) {
-            clearInterval(watchId);
-        },
-        
-        getPermission: function(siteName, imageUrl, extraMessage) {
-            // for now just say yes :)
-            return true;
-        }
-
-    };
-});
-
-// If you have Gears installed use that, else use Ajax ClientLocation
-navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation() : AjaxGeoLocation();
+// If you have Gears installed use that
+if (window.google && google.gears) {
+    navigator.geolocation = GearsGeoLocation();
+}
 
 })();