This is documentation of an archived release.
For documentation on the current version, please check Knowledge Base.
For documentation on the current version, please check Knowledge Base.
Geocoding Plugin for Google
The example below implements a plugin for the Google Geocoding Services.
For overview and documentation on how to implement, see Notes on Geocoding Plugins.
(function(){ orbit.webclient.GeocodePlugins.Google = { sensor: false, apiKey: null }; /** * Implements the geocoding request for Google Geocoding API V2 * @see https://developers.google.com/maps/documentation/geocoding/v2/ */ orbit.webclient.GeocodePlugins.Google.geocode = function(query,handleResult,handleFault) { var url = "http://maps.googleapis.com/maps/api/geocode/json"; url += "?address="+ encodeURIComponent(query); url += "&sensor="+ this.sensor; if (this.apiKey!=null) url += "&key="+ encodeURIComponent(this.apiKey); sendRequest(url,handleResult,handleFault); } // Example URL : http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false function sendRequest(url,handleResult,handleFault) { var req = createXMLHTTPObject(); if (!req) { handleFault({code:'plugin_error',message:"Failed to create XMLHTTPRequest object."}); return; } req.open("GET",url,true/*async*/); req.setRequestHeader('User-Agent','XMLHTTP/1.0'); req.onreadystatechange = function () { if (req.readyState != 4) return; if (req.status != 200 && req.status != 304) { handleFault({code:'network_error',message:"Invalid http response (status code "+ req.status +")"}); } else { try { var object = JSON.parse(req.responseText); if (object.status=="OK" || object.status=="ZERO_RESULTS") { var list = []; if (object.results.length>0) { var result = object.results[0]; var loc = result.geometry.location var lat = loc.lat; var lng = loc.lng; var boundingbox = null; if (result.geometry.viewport) { var max = result.geometry.viewport.northeast; var min = result.geometry.viewport.southwest; boundingbox = {minX:min.lng,maxX:max.lng,minY:min.lat,maxY:max.lat}; } list.push({coordinate:{x:lng,y:lat},crs:"4326",boundingbox:boundingbox}); } handleResult(list); } else if (object.status=="OVER_QUERY_LIMIT") { handleFault({code:'query_limit_reached',message:"Query limit reached."}); } else if (object.status=="REQUEST_DENIED") { handleFault({code:'no_permission',message:"Request denied."}); } else if (object.status=="UNKNOWN_ERROR") { handleFault({code:'service_error',message:"Internal server error occurred."}); } else { handleFault({code:'service_error',message:"Unkown status code returned by service '"+ object.status +"'"}); } } catch(error) { handleFault({code:'plugin_error',message:"Plugin error while processing response: "+ error}); } } } req.send(); } var XMLHttpFactories = [ function () {return new XMLHttpRequest()}, function () {return new ActiveXObject("Msxml2.XMLHTTP")}, function () {return new ActiveXObject("Msxml3.XMLHTTP")}, function () {return new ActiveXObject("Microsoft.XMLHTTP")} ]; function createXMLHTTPObject() { var xmlhttp = false; for (var i=0;i<XMLHttpFactories.length;i++) { try { xmlhttp = XMLHttpFactories[i](); } catch (e) { continue; } break; } return xmlhttp; } })();
Last modified:: 2019/03/25 11:36