Google Maps Plug-in

The Google Maps Plug-in for Convergence for MDM provides an enricher for international postal addresses. This enricher cleanses, standardizes and enriches the postal addresses with geocoding information.

Google Maps Enricher

Plug-in ID

Google Maps Enricher - com.semarchy.integration.rowTransformers.googleMapsEnricher

Description

This enricher takes an input address, enriches and validates this postal address using the Google Geocoding Service.

Note: This plugin must be used in compliance with the Google Maps/Google Earth APIs Terms of Service.

Note: This enricher uses the Google Geocoding Service, which must be accessible from the Convergence for MDM Application at the following URL: http://maps.googleapis.com/maps/api/geocode/json?<parameters>. Make sure to make this URL accessible through your firewalls.

Plug-in Parameters

The following table lists the plug-in parameters.

Parameter Name Mandatory Type Description
Client ID No String Client ID Provided by Google Enterprise Support when registering for Google Maps API for Business. The Client ID should begin with the gme- prefix.
Private Key No String Cryptographic signing key provided by Google Enterprise Support with the Client ID.

Plug-in Inputs

The following table lists the plug-in inputs.

Parameter Name Mandatory Type Description
Address Line Yes String Address line to process. If the address is composed of multiple lines, then these lines must be provided as a comma-separated list of address lines.
Postal Code No String Postal code of the address.
City No String City of the address.
Country No String Country of the address.

Note: The state, region or province information can be passed in the City input, concatenated with the city name. For example: Address.City || ' ' || Address.State

Note: The entire address, including the Address Line, Postal Code, City and Country values can be passed to the plugin as a single concatenated string in the Address Line input. If the source data contains the address in a single string, then you can pass this string directly in the Address Line input.

Plug-in Outputs

The following table lists the plug-in outputs. Output marked with an * appear in a Full and a Short form in the output list.

Parameter Name Type Description
Address Types String Comma-separated list of address types. (see Address Types for more information.)
Administrative Area Level 1* String First-order civil entity below the country level. Within the United States, these administrative levels are states. Not all countries exhibit these administrative levels.
Administrative Area Level 2* String Second-order civil entity below the country level. Within the United States, these administrative levels are counties. Not all countries exhibit these administrative levels.
Administrative Area Level 3* String Third-order civil entity below the country level. Not all countries exhibit these administrative levels.
Airport* String Indicates an airport. Note: This output is deprecated.
Country* String The national political entity.
East Bound Longitude String Bounding box eastern limit.
Floor* String Indicates the floor of a building address.
Formatted Address String Human-readable version of the geocoded address.
Intersection* String Major intersection, usually of two major roads. Note: This output is deprecated.
Latitude String Latitude of the address.
Locality* String Incorporated city or town political entity.
Longitude String Longitude of the address.
Natural Feature* String Prominent natural feature.
Neighborhood* String Named neighborhood.
North Bound Latitude String Bounding box northern limit.
Park* String Named park.
Point of Interest* String Named point of interest.
Post Box* String Specific postal box.
Postal Code* String Postal code as used to address postal mail within the country.
Premise* String Named location, usually a building or collection of buildings with a common name.
Quality String The value of an Address Quality element defines the granularity of the location described by an address. Should return a value that expresses this quality between 0 and 100 (100 being the best quality)
Room* String The room of a building address.
Route* String Named route (such as “US 401”).
South Bound Latitude String Bounding box southern limit.
Status String Status of the request. OK indicates that no error occurred and the address was geocoded. ZERO_RESULTS indicates that no error occurred but the address was not geocoded. See the API documentation for a list of status and error codes
Street Address* String Precise street address. Note: This output is deprecated.
Street Number* String Precise street number.
Sub-Locality* String First-order civil entity below a locality.
Sub-Premise* String First-order entity below a named location, usually a singular building within a collection of buildings with a common name.
West Bound Longitude String Bounding box western limit.

Embedded a Google Map in a Form

The Google Geocoding service data must be used to display maps rendered with the Google Maps service.

You can display such a map in Convergence for MDM in a form view, by embedding generated HTML and Javascript.

  1. Create a new form attribute with the SemQL expression given below.
  2. In the SemQL expression, modify the following line to concatenate your address information: var address= "' || AddressLine || ' ' || PostalCode || ' ' || City || '";.
  3. Edit the attribute:
'<!DOCTYPE html>
<html>
  <head>   
    <meta charset="utf-8">
    <script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
    <script>
    
/* Modify the line below */ 
var address= "' || AddressLine || ' ' || PostalCode || ' ' || City || '";

var zoom = 18;
var mapType = google.maps.MapTypeId.ROADMAP;
var useMarker = true;
var map;

function initialize() {   
	var geocoder = new google.maps.Geocoder();
	geocoder.geocode( { "address": address}, function(results, status) {
	 if (status == google.maps.GeocoderStatus.OK) { displayMap(results[0].geometry.location); }
	});
	window.onresize = resize;
}

function displayMap(latlng) {
	var mapOptions = { zoom: zoom, center: latlng, mapTypeId: mapType }
	map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
	if (useMarker) {
		var marker = new google.maps.Marker({ map: map, position: latlng});
	}
	resize("");
}

function resize(e) {
	var center = map.getCenter();
	map.getDiv().style.height = window.innerHeight +"px";
	map.getDiv().style.width = window.innerWidth +"px";
	google.maps.event.trigger(map, ''resize'');
	map.setCenter(center);
}

google.maps.event.addDomListener(window, "load", initialize);
    </script>
  </head>
  <body style="margin:0px;">
    <div id="map_canvas" style="margin:0px;"></div>
  </body>
</html>'