I would like a preface to this: I am very new to JavaScript. I am trying to position a userโs location and map borders using Leaflet and AJAX call. In the stateUpdater.onLocationFound event handler, the stateUpdater.onLocationFound operators print the correct user coordinates and map borders, however I get Uncaught TypeError: Cannot read property 'lat' of undefined when I try to serialize these values โโusing $.param() . I am using Leaflet v0.7.2 and jQuery 1.11.0.
var map; $(document).ready(function() { map = new L.map('map').setView([41.52, -71.09], 11); L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18 }).addTo(map); map.on('locationfound', stateUpdater.onLocationFound); stateUpdater.poll(); }); var stateUpdater = { errorSleepTime: 10000, poll: function() { map.locate({setView: true, maxZoom: 18}); }, onLocationFound: function(e) { //This log statement produces the correct output console.log(e.latlng.toString()); var bounds = map.getBounds(); //As does this one console.log(bounds.toBBoxString()) var args = { "map_ne": bounds.getNorthEast(), "map_sw": bounds.getSouthWest(), "user_coords": e.latLng }; //Uncaught TypeError thrown here $.ajax({url: "/a/state/updates", type: "POST", dataType: "text", data: $.param(args), success: stateUpdater.onSuccess, error: stateUpdater.onError}); }, onSuccess: function(response) { console.log(response); stateUpdater.errorSleepTime = 10000; window.setTimeout(stateUpdater.poll, 10000); }, onError: function(response) { stateUpdater.errorSleepTime *= 2; console.log("Poll error; sleeping for", stateUpdater.errorSleepTime, "ms"); window.setTimeout(stateUpdater.poll, stateUpdater.errorSleepTime); }, };
I no longer have any idea what might be causing this, so I will be very grateful for the help.
source share