8

I'm getting this error all of a sudden when trying to add markers to a map in the CP:

Uncaught TypeError: this.lat is not a function

I've previously followed all of the advice on devot-ee about using a previous version of the Google Maps API, but this has now happened despite doing that.

Any advice on how to work around this?

20

The following fix works for me. The project in which I'm using this fieldtype does not require the use of most of the product's more advanced features so I can't guarantee that it fixes everything. Nor can I guarantee that it won't break something else. But hey, it's a start :-)

Open up /themes/third_party/gmap/javascript/gmap_field.js and search for "var updateValues". (The line number will vary depending on your addon version.) Modify the code as follows:

// @HACK VMG 2016-05-26
// Fixes "this.lat is not a function" error caused by
// the response object containing float values for lat
// and lng instead of a LatLng object.
$.each(response.markers.results, function(i, result) {
    response.markers.results[i].geometry.location = new google.maps.LatLng(result.geometry.location.lat, result.geometry.location.lng);
        });
$.each(response.waypoints.results, function(i, result) {
    response.waypoints.results[i].geometry.location = new google.maps.LatLng(result.geometry.location.lat, result.geometry.location.lng);
});
$.each(response.regions.results, function(i, result) {
    response.regions.results[i].geometry.location = new google.maps.LatLng(result.geometry.location.lat, result.geometry.location.lng);
});
var updateValues = [
    JSON.stringify(response.markers.results),
    JSON.stringify(response.waypoints.results),
    JSON.stringify(response.regions.results)
];

Hopefully that helps others of you who are facing the same problem.

| improve this answer | |
  • Life saver! This worked for me. – Adam George May 26 '16 at 22:06
  • This worked great for me on Google Maps for EE 3.3.8. Thanks Mr Wilson! :-) – Stephen May 27 '16 at 10:05
  • Nice one. This coupled with the fix below (it must be v3.22) worked for me. – liamcrean Aug 17 '16 at 9:56
  • Using the various fixes already mentioned the individual entries are working, but I still can't get the Importer to run correctly (whether it's 10 or 1000's of entries). The importer / geocoder still shows the error "this.lat is not a function"? – christiaan May 15 '17 at 6:15
1

You may have already tried this. This fix worked for me a while ago (I just checked - and GMAPS is still working fine on the site this fix was applied to).

Around line 180 in this file: system/expressionengine/thirdparty/gmap/ft.gmap.php

CHANGE THIS:

$this->EE->theme_loader->javascript('https://maps.google.com/maps/api/js?sensor=true');

TO THIS:

$this->EE->theme_loader->javascript('https://maps.google.com/maps/api/js?v=3.22&sensor=true');

| improve this answer | |
  • Thanks Jules, yes, this change was already in place prior to the problem appearing. – Adam George May 26 '16 at 1:31
  • I've also noticed this same issue happening in the last day or so on all the sites I have that use Google Maps for EE. I was also using the previous patch that was listed on Devot-ee: devot-ee.com/add-ons/support/google-maps/viewthread/15475 – Stephen May 26 '16 at 10:40
  • I was just going to post that I did the same fix, but when checking the site now I see that this error is back. I also get this warning in my console "Google Maps API warning: RetiredVersion developers.google.com/maps/documentation/javascript/…" – Bjørn Børresen May 26 '16 at 17:06
  • Hello, Solutions explain above are works in past. None of this is working now. Do any one have some solution ? I have gmap 3.3.9 – Mufi - Amici Infotech Oct 6 '16 at 10:43
  • It's best to change the line above to $this->EE->theme_loader->javascript('maps.google.com/maps/api/js?v=3&sensor=true');. This ensures that you're using the latest of API V3. I think v=3.24 and below have now been retired. – doubleplusgood Nov 15 '16 at 12:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.