diff --git a/lib/geocoder/googlegeocoder.js b/lib/geocoder/googlegeocoder.js index 54b30ba1..d1b29ab8 100644 --- a/lib/geocoder/googlegeocoder.js +++ b/lib/geocoder/googlegeocoder.js @@ -183,6 +183,7 @@ GoogleGeocoder.prototype._formatResult = function (result) { } }; + var localityFlag = false; for (var i = 0; i < result.address_components.length; i++) { for (var x = 0; x < result.address_components[i].types.length; x++) { var addressType = result.address_components[i].types[x]; @@ -219,9 +220,15 @@ GoogleGeocoder.prototype._formatResult = function (result) { break; // City case 'locality': - case 'postal_town': + localityFlag = true; extractedObj.city = result.address_components[i].long_name; break; + case 'sublocality': + case 'postal_town': + if (!localityFlag) { + extractedObj.city = result.address_components[i].long_name; + } + break; // Address case 'postal_code': extractedObj.zipcode = result.address_components[i].long_name; @@ -243,7 +250,6 @@ GoogleGeocoder.prototype._formatResult = function (result) { break; case 'sublocality_level_1': case 'political': - case 'sublocality': case 'neighborhood': if(!extractedObj.extra.neighborhood) { extractedObj.extra.neighborhood = result.address_components[i].long_name;