forwardGeocoder doesn't release connection

You must Login before you can answer or comment on any questions.

I'm using forwardGeocoder in my app and it works perfectly in the app, but for some reason once forwardGeocoder has been invoked, it seems to continue to use the internet connection. The connection spinner in the status bar continues to indicate activity, even though the forwardGeocoder action is complete.

This could be problematic since the app may continue to consume resources (or at least appear to) and incur unneeded data usage charges.

Does anyone know how I can force disconnection of the internet connection at the end of my forwardGeocoder function?

I'm using sdk 1.4.2-r8e6bd670 but this has been happening for a while now and I think I need to fix it before submitting the app.

1 Answer

Accepted Answer

I too am having some network activity indicator continuous spinning problems recently. I have kind of wondered if it was just something missed in the newest continuous builds.

Anyways, one day I was having tons of problems with Titanium's forward geocoder (like if I entered Cupertino like the Kitchen Sink example it worked, anywhere else it failed). So I got fed up and have simply started calling google directly. I have included some of my code if you care to give it a try. It might help your situation.....though you will likely want to reduce my setTimeout.

//Get LAT & LON from user entered location
function getGeoLocation(strLocation) {
    var lat = 0;
    var lon = 0;
    var location = '';
 
    if (!Titanium.Network.online) {
        return;
    } else {
        var xhrGeocode = Titanium.Network.createHTTPClient();
        xhrGeocode.setTimeout(120000);
        xhrGeocode.onload = function (e) {
            var response = JSON.parse(this.responseText);
            if (response.status == 'OK' && response.results != undefined && response.results.length > 0) {
                lat = response.results[0].geometry.location.lat;
                lon = response.results[0].geometry.location.lng;
                location = strLocation;
            }
        };
 
        xhrGeocode.onerror = function (e) {};
 
        var url = "http://maps.google.com/maps/api/geocode/json?address=" + strLocation.replace(' ', '+');
        url += "&sensor=" + (Titanium.Geolocation.locationServicesEnabled == true);
        xhrGeocode.open("GET", url);
        xhrGeocode.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
        xhrGeocode.send();
    }
}

Your Answer

Think you can help? Login to answer this question!