How to validate address using google maps?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-20-2017 12:05 AM
Hello experts,
There is requirement to validate user Address in ServiceNow using google maps.
has anyone have achieved this before?
Any help will be appreciated.
Regards
Neeraj Sharma

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-20-2017 12:41 AM
Please check if this helps: Google map in the Location of Incident

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-27-2017 06:16 AM
I did a postcode lookup using the Google maps API to return the full address if that's what you are after?
// Client Script : Postcode REST Call - House Number (String inputs from "house" and "postcode" fields)
function onChange(control, oldValue, newValue, isLoading) {if (isLoading || newValue == '') {
return;
}
var house = newValue;
var postcodeInput = g_form.getValue('postcode');
var ga = new GlideAjax('REST_API_CALL');
ga.addParam('sysparm_name','getData');
ga.addParam('sysparm_house',house);
ga.addParam('sysparm_postcodeInput', postcodeInput);
ga.getXML(responseParse);
function responseParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var stringifiedAnswer = answer.toString();
var addressArray = stringifiedAnswer.split(", ");
//g_form.setValue('full_address', answer);
if(addressArray.length==7){g_form.setValue('address_line_1', addressArray[0] + ", " + addressArray[1]);
g_form.setValue('address_line_2', addressArray[2]);
g_form.setValue('town', addressArray[3]);
g_form.setValue('region', addressArray[5]);
g_form.setValue('country', addressArray[6]);
}
else if(addressArray.length==6){
g_form.setValue('address_line_1', addressArray[0] + ", " + addressArray[1]);
g_form.setValue('address_line_2', addressArray[2]);
g_form.setValue('town', addressArray[4]);
g_form.setValue('region', addressArray[3]);
g_form.setValue('country', addressArray[5]);
}
else{
g_form.addErrorMessage("Error occurred!, please check the details given. If the error reoccurs please enter the address manually.");
}
}
}
// Script Include
var REST_API_CALL = Class.create();REST_API_CALL.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getData: function()
{
try{
var postcodeInput = this.getParameter('sysparm_postcodeInput');
var house = this.getParameter('sysparm_house');
var cleanAddress = '';
var responseBody = '';
var url = 'http://maps.googleapis.com/maps/api/geocode/json';
//Get Latitude and Longitude from Google Maps
var ws = new GlideHTTPRequest(url);ws.addParameter("address", postcodeInput);
ws.addParameter("sensor", "false");
var getResponse = ws.get();
//Set latitude & longitude values
var content = new JSON().decode(getResponse.getBody().toString());var lat = content.results[0].geometry.location.lat;
var lng = content.results[0].geometry.location.lng;
//Get full address by querying the latitude and longitude coordinates
var loc = new GlideHTTPRequest(url);loc.addParameter("latlng", lat + ',' + lng);
loc.addParameter("sensor", "false");
var getResponseAll = loc.get();
var mainContent = new JSON().decode(getResponseAll.getBody().toString());
var address = mainContent.results[0].address_components;
var prestreet='';
if(isNaN(address[0].long_name)){
prestreet = address[0].long_name;
}
var street = address[1].long_name;
var town = address[2].long_name;
var county = address[5].long_name;
var region = address[3].long_name;
var postcode = address[6].long_name;
//Insert the populated fields to the return variable cleanAddress
if(prestreet!=''){cleanAddress = (house + ', ' + prestreet + ', ' + street + ', ' + town + ', ' + county + ', ' + region + ', ' + postcode);
}
else{
cleanAddress = (house + ', ' + street + ', ' + town + ', ' + county + ', ' + region + ', ' + postcode);
}
// Check for invalid return
var invalid = cleanAddress.startsWith("Invalid");if(invalid){
cleanAddress = "An error occurred please try another address or enter the address manually.";
}
return cleanAddress;
}
catch(ex) {
var message = ex.getMessage();
return message;
}
},
isPublic: function() {
return true;
}
});