Skip to content

Instantly share code, notes, and snippets.

@kflaw
Created January 21, 2016 23:21
Show Gist options
  • Save kflaw/3499c2a1b77ac75185c6 to your computer and use it in GitHub Desktop.
Save kflaw/3499c2a1b77ac75185c6 to your computer and use it in GitHub Desktop.
webservice_proxyAPP1.js
<!--
var WS_PROTO = location.protocol;
var WS_HOST = location.hostname;
var WS_PORT = location.port;
var WS_URI = '/postmilewebservice/services/GISWebServiceSoapImpl';
//var WS_URL = "http://svhqgisapp1.dot.ca.gov/postmilewebservice/services/GISWebServiceSoapImpl";
//var WS_URL = "http://svgcgoo5.dot.ca.gov:8080/postmilewebservice-2009-01/services/PostmileWebService";
//var WS_URL = "http://svhqgisapp2.dot.ca.gov/postmilewebservice-2009-01/services/PostmileWebService";
var WS_URL = "http://svhqgisapp1.dot.ca.gov/proxy.php";
var WS_NS = "http://postmile.dot.ca.gov";
//SOAP ACTIONS:
//WS_NM + "/" + "GetPostmileForPoint"
//WS_NM + "/" + "ValidatePostmile"
//WS_NM + "/" + "ValidatePostmilePair"
//WS_NM + "/" + "GetCoordinatesForPostmile"
//WS_NM + "/" + "GetCoordinatesForPostmilePair"
//WS_NM + "/" + "GetOdometerForPostmile"
// COMMON LRS OBJECTS
function postmile() {
this.routeNumber=0;
this.routeSuffixCode=null;
this.countyCode=null;
this.postmilePrefixCode=null;
this.postmileValue=-1.0;
this.alignmentCode=null;
}
//XML Serialization methods
postmile.prototype.toXML = function() {}
postmile.prototype.loadFromXML = function(node) {
if (node != null) {
this.routeNumber = getObj(node, "routeNumber");
if(node.getElementsByTagName("routeSuffixCode")[0].firstChild != null)
this.routeSuffixCode = node.getElementsByTagName("routeSuffixCode")[0].firstChild.data;
else
this.routeSuffixCode = null;
this.countyCode = getObj(node, "countyCode");
if (node.getElementsByTagName("postmilePrefixCode")[0].firstChild != null)
this.postmilePrefixCode = node.getElementsByTagName("postmilePrefixCode")[0].firstChild.data;
else
this.postmilePrefixCode = null;
this.postmileValue = node.getElementsByTagName("postmileValue")[0].firstChild.data;
if(node.getElementsByTagName("alignmentCode")[0].firstChild == null)
this.alignmentCode= null;
else
this.alignmentCode = node.getElementsByTagName("alignmentCode")[0].firstChild.data;
}
}
function postmilePair() {
this.routeNumber=0;
this.routeSuffixCode=null;
this.fromPostmile=null; //postmile
this.toPostmile=null; //postmile
}
postmilePair.prototype.toXML = function(){}
postmilePair.prototype.loadFromXML = function(node){}
function lrspoint() {
this.x=0.0;
this.y=0.0;
this.z=0.0;
this.m=0.0;
this.spatialReferenceID=0;
}
lrspoint.prototype.toXML = function(){}
lrspoint.prototype.loadFromXML = function(node){}
function pointCollection() {
this.points=null;
}
pointCollection.prototype.toXML = function(){}
pointCollection.prototype.loadFromXML = function(node){}
function lineCollection() {
this.pointCollections=null;
this.spatialReferenceID=0;
}
lineCollection.prototype.toXML = function(){}
lineCollection.prototype.loadFromXML = function(node){}
function validatorCandidate() {
this.score=-1.0;
this.postmile=null;
}
validatorCandidate.prototype.toXML = function(){}
validatorCandidate.prototype.loadFromXML = function(node){}
function validatorError() {
this.errorCode=0;
this.errorMsg=null;
}
validatorError.prototype.toXML = function(){}
validatorError.prototype.loadFromXML = function(node){}
function validatorWarning() {
this.warningCode=0;
this.warningMsg=null;
}
validatorWarning.prototype.toXML = function(){}
validatorWarning.prototype.loadFromXML = function(node){}
// WEB SERVICE REQUEST/RESPONSE OBJECTS
function pmRequest() {
this.options=null;
this.postmile=null;
this.postmilePair=null;
}
pmRequest.prototype.toXML = function(){}
pmRequest.prototype.loadFromXML = function(node){}
function pmOptions() {
this.alignmentType=-1;
this.effectiveDate=null;
this.offsetDistance=0.0;
}
pmOptions.prototype.toXML = function(){}
pmOptions.prototype.loadFromXML = function(node){}
function pmResponse() {
this.multiPointGeometry=null;
this.pointGeometry=null;
this.polylineGeometry=null;
}
pmResponse.prototype.toXML = function(){}
pmResponse.prototype.loadFromXML = function(node){}
function revPMRequest() {
this.inputPoint=null; //point
this.options=null; //revPMOptions
this.routeNumber=0; //short
this.routeSuffixCode=null; //string
this.alignment=null; //string
}
revPMRequest.prototype.toXML = function(){}
revPMRequest.prototype.loadFromXML = function(node){}
function revPMOptions() {
this.toleranceDegrees=0.0; //double
}
revPMOptions.prototype.toXML = function(){}
revPMOptions.prototype.loadFromXML = function(node){}
function revPMResponse() {
this.outputPostmile=null; //postmile
this.distanceFromRoute=-1.0; //double
this.nearestRoutePoint=null; //point
}
revPMResponse.prototype.toXML = function(){}
revPMResponse.prototype.loadFromXML = function(node){}
function validatorRequest() {
this.options=null;
this.postmile=null;
this.postmilePair=null;
}
validatorRequest.prototype.toXML = function(){}
validatorRequest.prototype.loadFromXML = function(node){}
function validatorOptions() {
this.effectiveDate=null;
this.tolerance=0.01;
}
validatorOptions.prototype.toXML = function(){}
validatorOptions.prototype.loadFromXML = function(node){}
function validatorResult() {
this.isValid=false;
this.candidates=null;
this.errors=null;
this.warnings=null;
}
validatorResult.prototype.toXML = function(){}
validatorResult.prototype.loadFromXML = function(node){}
function pmToOdometerRequest() {
this.postmile=null;
this.alignmentCode=null; //string
}
pmToOdometerRequest.prototype.toXML = function(){}
pmToOdometerRequest.prototype.loadFromXML = function(node){}
function pmToOdometerResponse() {
this.odometer=-1.0;
}
pmToOdometerResponse.prototype.toXML = function(){}
pmToOdometerResponse.prototype.loadFromXML = function(node){}
function pointToOdometerRequest() {
}
pointToOdometerRequest.prototype.toXML = function(){}
pointToOdometerRequest.prototype.loadFromXML = function(node){}
function pointToOdometerResponse() {
}
pointToOdometerResponse.prototype.toXML = function(){}
pointToOdometerResponse.prototype.loadFromXML = function(node){}
function odometerToPMRequest() {
}
odometerToPMRequest.prototype.toXML = function(){}
odometerToPMRequest.prototype.loadFromXML = function(node){}
function odometerToPMResponse() {
}
odometerToPMResponse.prototype.toXML = function(){}
odometerToPMResponse.prototype.loadFromXML = function(node){}
function odometerToPointRequest() {
}
odometerToPointRequest.prototype.toXML = function(){}
odometerToPointRequest.prototype.loadFromXML = function(node){}
function odometerToPointResponse() {
}
odometerToPointResponse.prototype.toXML = function(){}
odometerToPointResponse.prototype.loadFromXML = function(node){}
function odometerPairToLineCollectionRequest() {
}
odometerPairToLineCollectionRequest.prototype.toXML = function(){}
odometerPairToLineCollectionRequest.prototype.loadFromXML = function(node){}
function odometerPairToLineCollectionResponse() {
}
odometerPairToLineCollectionResponse.prototype.toXML = function(){}
odometerPairToLineCollectionResponse.prototype.loadFromXML = function(node){}
///WEB SERVICE METHODS /////
function GISWebServiceSoapImp() {
}
GISWebServiceSoapImp.prototype.getPostmileForPoint = function(pmrequest) {
var xmlObj = null;
var xmlResponse = null;
var pmresponse = null;
var inputPoint = pmrequest.inputPoint;
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
return;
}
// var requestXML = " \
//<soap:Envelope \
// xmlns:q0=\"http://postmile.dot.ca.gov\" \
// xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" \
// xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \
// xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \
// >";
var requestXML = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> ";
requestXML += "<soap:Body><getPostmileForPointParameters xmlns=\"urn:webservice.postmile.lrs.gis.dot.ca.gov\"><inputPoint><m>0</m><spatialReferenceID>4269</spatialReferenceID><x>" + inputPoint.x + "</x><y>" + inputPoint.y + "</y><z>0</z></inputPoint><options><toleranceDegrees>" + .25 + "</toleranceDegrees></options><routeAlignment xsi:nil=\"true\" /><routeNumber>0</routeNumber><routeSuffixCode xsi:nil=\"true\" /></getPostmileForPointParameters></soap:Body></soap:Envelope>";
// requestXML += " \
//<soap:Body> \
// <q0:getPostmileForPointParameters> \
// <q0:inputPoint> \
// <q0:m>0</q0:m> \
// <q0:spatialReferenceID>" + inputPoint.spatialReferenceID + "</q0:spatialReferenceID> \
// <q0:x>" + inputPoint.x + "</q0:x> \
// <q0:y>" + inputPoint.y + "</q0:y> \
// <q0:z>0</q0:z> \
// </q0:inputPoint> \
// <q0:options> \
// <q0:toleranceDegrees>" + pmrequest.options.toleranceDegrees + "</q0:toleranceDegrees> \
// </q0:options> \
// <q0:routeAlignment /> \
// <q0:routeNumber>0</q0:routeNumber> \
// <q0:routeSuffixCode /> \
// </q0:getPostmileForPointParameters> \
// </soap:Body> \
// </soap:Envelope> \
// ";
xmlObj.open('POST',
WS_URL,
false);
xmlObj.setRequestHeader("Content-Type", "text/xml");
xmlObj.setRequestHeader("SOAPAction", WS_NS + "/" + "GetPostmileForPoint");
xmlObj.send(requestXML);
if (xmlObj.status == 200)
{
pmresponse = new pmResponse();
xmlResponse = xmlObj.responseXML;
outputPMNode = xmlResponse.getElementsByTagName("outputPostmile")[0];
var outputPostmile = new postmile();
outputPostmile.loadFromXML(outputPMNode);
pmresponse.outputPostmile = outputPostmile;
}
else
{
var errXML = xmlObj.responseXML.getElementsByTagName("faultstring")[0];
if (errXML != null)
{
var errStr = errXML.firstChild.data;
//clear error
errStr = errStr.replace(/java.rmi.RemoteException\:/, "");
alert(errStr);
}
else
{
if(window.ActiveXObject)
{
errXML = xmlObj.responseXML.xml;
}
else
{
errXML = new XMLSerializer().serializeToString(xmlObj.responseXML);
}
alert(errXML);
}
}
return pmresponse;
}
//req = pm2OdometerRequest
GISWebServiceSoapImp.prototype.getOdometerForPostmile = function (req)
{
var xmlObj = null;
var xmlResponse = null;
var odometer = -1;
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
return;
}
//var requestXML = " \
//<soap:Envelope \
// xmlns:q0=\"http://postmile.dot.ca.gov\" \
// xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" \
// xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \
// xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \
//<soap:Body> \
//<q0:getOdometerForPostmileParameters> \
//<q0:alignment>" + req.alignmentCode + "</q0:alignment> \
//<q0:postmile> \
//<q0:countyCode>" + req.postmile.countyCode + "</q0:countyCode>";
var requestXML = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"urn:webservice.postmile.lrs.gis.dot.ca.gov\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">";
requestXML += "<soapenv:Body><q0:getOdometerForPostmileParameters><q0:alignment>" + req.alignmentCode + "</q0:alignment><q0:postmile>";
if(req.postmile.alignmentCode != null)
requestXML += "<q0:alignmentCode>" + req.postmile.alignmentCode + "</q0:alignmentCode>";
// else requestXML += "<q0:alignmentCode/>";
requestXML += "<q0:countyCode>" + req.postmile.countyCode + "</q0:countyCode>";
if(req.postmile.postmilePrefixCode != null)
requestXML += "<q0:postmilePrefixCode>" + req.postmile.postmilePrefixCode + "</q0:postmilePrefixCode>";
// else requestXML += "<q0:postmilePrefixCode/>";
requestXML += "<q0:postmileValue>" + req.postmile.postmileValue + "</q0:postmileValue>";
requestXML += "<q0:routeNumber>" + req.postmile.routeNumber + "</q0:routeNumber>";
if(req.postmile.routeSuffixCode != null)
requestXML += "<q0:routeSuffixCode>" + req.postmile.routeSuffixCode + "</q0:routeSuffixCode>";
// else requestXML += "<q0:routeSuffixCode/>";
requestXML += "</q0:postmile></q0:getOdometerForPostmileParameters></soapenv:Body></soapenv:Envelope>";
xmlObj.open ('POST',
WS_URL,
false);
xmlObj.setRequestHeader("Content-Type", "text/xml");
xmlObj.setRequestHeader("SOAPAction", WS_NS + "/" + "GetOdometerForPostmile");
xmlObj.send(requestXML);
var res = null;
if (xmlObj.status == 200) {
xmlResponse = xmlObj.responseXML;
var respNode = xmlResponse.getElementsByTagName("getOdometerForPostmileReturn")[0];
res = new pmToOdometerResponse();
var odometerNode = respNode.firstChild;
odometer = odometerNode.firstChild.data;
res.odometer = odometer;
}
else
{
var errXML = xmlObj.responseXML.getElementsByTagName("faultstring")[0];
if (errXML != null)
{
var errStr = errXML.firstChild.data;
//clear error
errStr = errStr.replace(/java.rmi.RemoteException\:/, "");
alert(errStr);
}
else
{
if(window.ActiveXObject)
{
errXML = xmlObj.responseXML.xml;
}
else
{
errXML = new XMLSerializer().serializeToString(xmlObj.responseXML);
}
alert(errXML);
}
}
return res;
}
GISWebServiceSoapImp.prototype.validatePostmile = function(req) {
var xmlObj = null;
var xmlResponse = null;
var pm = req.postmile;
var options = req.options;
var res = null;
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
return;
}
// var requestXML = " \
//<soap:Envelope \
// xmlns:q0=\"http://postmile.dot.ca.gov\" \
// xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" \
// xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \
// xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \
//<soap:Body> \
//<q0:validatePostmileParameters xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \
//<q0:options> \
// <q0:tolerance>" + options.tolerance + "</q0:tolerance> \
//</q0:options> \
//<q0:postmileEvent> \
//<q0:countyCode>" + pm.countyCode + "</q0:countyCode> \
//<q0:postmileValue>" + pm.postmileValue + "</q0:postmileValue> \
//<q0:routeNumber>" + pm.routeNumber + "</q0:routeNumber>";
//if(pm.routeSuffixCode != "")
// requestXML += "<q0:routeSuffixCode>" + pm.routeSuffixCode + "</q0:routeSuffixCode>";
//if(pm.alignmentCode != "")
// requestXML += "<q0:alignmentCode>" + pm.alignmentCode + "</q0:alignmentCode>";
//if(pm.postmilePrefixCode != "")
// requestXML += "<q0:postmilePrefixCode>" + pm.postmilePrefixCode + "</q0:postmilePrefixCode>";
//requestXML += " \
//</q0:postmileEvent>";
//<q0:postmileSegmentEvent xsi:nil=\"true\"/> \
//requestXML += " \
//</q0:validatePostmileParameters> \
//</soap:Body> \
//</soap:Envelope> \
//";
var requestXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">";
//requestXML += "<soap:Body><validatePostmileParameters xmlns=\"urn:webservice.postmile.lrs.gis.dot.ca.gov\"><options><effectiveDate xsi:nil=\"true\"/><tolerance>" + options.tolerance + "</tolerance></options><postmileEvent><alignmentCode xsi:nil=\"true\"/><countyCode>" + pm.countyCode + "</countyCode>";
requestXML += "<soap:Body><validatePostmileParameters xmlns=\"urn:webservice.postmile.lrs.gis.dot.ca.gov\"><options><effectiveDate xsi:nil=\"true\"/><tolerance>" + options.tolerance + "</tolerance></options><postmileEvent>";
if(pm.alignmentCode != "")
requestXML += "<alignmentCode>" + pm.alignmentCode + "</alignmentCode>";
else requestXML += "<alignmentCode xsi:nil=\"true\"/>";
requestXML += "<countyCode>" + pm.countyCode + "</countyCode>";
if(req.postmile.postmilePrefixCode != "")
requestXML += "<postmilePrefixCode>" + pm.postmilePrefixCode + "</postmilePrefixCode>";
// else requestXML += "<postmilePrefixCode xsi:nil=\"true\"/>";
requestXML += "<postmileValue>" + pm.postmileValue + "</postmileValue><routeNumber>" + pm.routeNumber + "</routeNumber>";
if(pm.routeSuffixCode != "")
requestXML += "<routeSuffixCode>" + pm.routeSuffixCode + "</routeSuffixCode>";
else requestXML += "<routeSuffixCode xsi:nil=\"true\"/>";
requestXML += "</postmileEvent><postmileSegmentEvent xsi:nil=\"true\"/></validatePostmileParameters></soap:Body></soap:Envelope>";
xmlObj.open ('POST',
WS_URL,
false);
xmlObj.setRequestHeader("Content-Type", "text/xml");
xmlObj.setRequestHeader("SOAPAction", WS_NS + "/" + "ValidatePostmile");
xmlObj.send(requestXML);
if (xmlObj.status == 200)
{
xmlResponse = xmlObj.responseXML;
retNode = xmlResponse.getElementsByTagName("validatePostmileReturn")[0];
if (retNode != null)
{
res = new validatorResult();
var isValid = null;
var warnings= null;
var errors = null;
var candidates = null;
var child = null;
for(n=0;n<retNode.childNodes.length;n++)
{
child = retNode.childNodes[n];
if(child.nodeName.indexOf("isValid")>=0){
isValid = child.firstChild.data;
}
if(child.nodeName.indexOf("warnings")>=0){
warnings = child.childNodes;
}
if(child.nodeName.indexOf("errors")>=0){
errors = child.childNodes;
}
if(child.nodeName.indexOf("candidates")>=0){
candidateNodes = child.childNodes;
}
}
res.isValid = (isValid == "true");
if(warnings != null)
var numWarnings = warnings.length;
if(errors != null)
var numErrors = errors.length;
if(candidateNodes != null)
{
var numCandidates = candidateNodes.length;
res.candidates = new Array();
for (var i=0; i<candidateNodes.length; i++)
{
var candidateNode = candidateNodes[i];
var pmNode = candidateNode.getElementsByTagName("candidatePostmile")[0];
score = getObj(candidateNode, "score");
var candidate = new validatorCandidate();
pm = new postmile();
pm.loadFromXML(pmNode);
candidate.score = score;
candidate.postmile=pm;
res.candidates[i] = candidate;
}
}
}
else
{
alert("No validation result returned for Postmile");
}
}
else
{
var errXML = xmlObj.responseXML.getElementsByTagName("faultstring")[0];
if (errXML != null)
{
var errStr = errXML.firstChild.data;
//clear error
errStr = errStr.replace(/java.rmi.RemoteException\:/, "");
alert(errStr);
}
else
{
if(window.ActiveXObject)
{
errXML = xmlObj.responseXML.xml;
}
else
{
errXML = new XMLSerializer().serializeToString(xmlObj.responseXML);
}
alert(errXML);
}
}
return res;
}
GISWebServiceSoapImp.prototype.validatePostmilePair = function(req) {
var xmlObj = null;
var xmlResponse = null;
var resNode = null;
var pp = req.postmilePair;
var pmFrom = pp.fromPostmile;
var pmTo = pp.toPostmile;
var options = req.options;
var res = null;
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
return;
}
var requestXML = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body>";
requestXML += "<validatePostmilePairParameters xmlns=\"urn:webservice.postmile.lrs.gis.dot.ca.gov\"><options><effectiveDate xsi:nil=\"true\" /><tolerance>" + options.tolerance + "</tolerance></options><postmileEvent xsi:nil=\"true\" />";
requestXML += "<postmileSegmentEvent><fromPostmile>";
if(pmFrom.alignmentCode != "")
requestXML += "<alignmentCode>" + pmFrom.alignmentCode + "</alignmentCode>";
else requestXML += "<alignmentCode xsi:nil=\"true\" />";
requestXML += "<countyCode>"+ pmFrom.countyCode +"</countyCode>";
if(pmFrom.postmilePrefixCode != "")
requestXML += "<postmilePrefixCode>" + pmFrom.postmilePrefixCode + "</postmilePrefixCode>";
else requestXML += "<postmilePrefixCode xsi:nil=\"true\" />";
requestXML += "<postmileValue>" + pmFrom.postmileValue +"</postmileValue><routeNumber>" + pp.routeNumber + "</routeNumber>";
if(pp.routeSuffixCode != "")
requestXML += "<routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode></fromPostmile>";
else requestXML += "<routeSuffixCode xsi:nil=\"true\" /></fromPostmile>";
requestXML += "<routeNumber>" + pp.routeNumber + "</routeNumber>";
if(pp.routeSuffixCode != "")
requestXML += "<routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode>";
else requestXML += "<routeSuffixCode xsi:nil=\"true\" />"
requestXML += "<toPostmile>";
if(pmTo.alignmentCode != "")
requestXML += "<alignmentCode>" + pmTo.alignmentCode + "</alignmentCode>";
else requestXML += "<alignmentCode xsi:nil=\"true\" />";
requestXML += "<countyCode>" + pmTo.countyCode + "</countyCode>";
if(pmTo.postmilePrefixCode != "")
requestXML += "<postmilePrefixCode>" + pmTo.postmilePrefixCode + "</postmilePrefixCode>";
else requestXML += "<postmilePrefixCode xsi:nil=\"true\" />";
requestXML += "<postmileValue>" + pmTo.postmileValue + "</postmileValue><routeNumber>" + pp.routeNumber + "</routeNumber>";
if(pp.routeSuffixCode != "")
requestXML += "<routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode></toPostmile>";
else requestXML += "<routeSuffixCode xsi:nil=\"true\" /></toPostmile>";
requestXML += "</postmileSegmentEvent></validatePostmilePairParameters></soap:Body></soap:Envelope>";
// var requestXML = " \
//<soap:Envelope \
// xmlns:q0=\"http://postmile.dot.ca.gov\" \
// xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" \
// xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \
// xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \
//<soap:Body> \
// <q0:validatePostmilePairParameters xmlns=\"" + WS_NS + "\"> \
// <q0:postmileSegmentEvent> \
// <q0:routeNumber>" + pp.routeNumber + "</q0:routeNumber>";
// if(pp.routeSuffixCode != "")
// requestXML += "<q0:routeSuffixCode>" + pp.routeSuffixCode + "</q0:routeSuffixCode>";
// requestXML += "<q0:fromPostmile> \
// <q0:routeNumber>" + pp.routeNumber + "</q0:routeNumber>";
// if(pp.routeSuffixCode != "")
// requestXML += "<q0:routeSuffixCode>" + pp.routeSuffixCode + "</q0:routeSuffixCode>";
// if(pmFrom.alignmentCode != "")
// requestXML += "<q0:alignmentCode>" + pmFrom.alignmentCode + "</q0:alignmentCode>";
// requestXML += "<q0:postmileValue>" + pmFrom.postmileValue + "</q0:postmileValue>";
// if(pmFrom.postmilePrefixCode != "")
// requestXML += "<q0:postmilePrefixCode>" + pmFrom.postmilePrefixCode + "</q0:postmilePrefixCode>";
// requestXML += "<q0:countyCode>" + pmFrom.countyCode + "</q0:countyCode> \
// </q0:fromPostmile>";
// requestXML += "<q0:toPostmile> \
// <q0:routeNumber>" + pp.routeNumber + "</q0:routeNumber>";
// if(pp.routeSuffixCode != "")
// requestXML += "<q0:routeSuffixCode>" + pp.routeSuffixCode + "</q0:routeSuffixCode>";
// if(pmTo.alignmentCode != "")
// requestXML += "<q0:alignmentCode>" + pmTo.alignmentCode + "</q0:alignmentCode>";
// requestXML += "<q0:postmileValue>" + pmTo.postmileValue + "</q0:postmileValue>";
// if(pmTo.postmilePrefixCode != "")
// requestXML += "<q0:postmilePrefixCode>" + pmTo.postmilePrefixCode + "</q0:postmilePrefixCode>";
// requestXML += "<q0:countyCode>" + pmTo.countyCode + "</q0:countyCode> \
// </q0:toPostmile> \
// </q0:postmileSegmentEvent> \
// <q0:options> \
// <q0:tolerance>" + options.tolerance + "</q0:tolerance> \
// </q0:options> \
// </q0:validatePostmilePairParameters> \
//</soap:Body> \
//</soap:Envelope> \
// ";
xmlObj.open ('POST',
WS_URL,
false);
xmlObj.setRequestHeader("Content-Type", "text/xml");
xmlObj.setRequestHeader("SOAPAction", WS_NS + "/" + "ValidatePostmilePair");
xmlObj.send(requestXML);
if (xmlObj.status == 200)
{
xmlResponse = xmlObj.responseXML;
resNode = xmlResponse.getElementsByTagName("validatePostmilePairReturn")[0];
if (resNode != null)
{
res = new validatorResult();
var isValid = getObj(resNode, "isValid");
res.isValid = (isValid == "true");
//If valid, display on the map
if(res.isValid)
{
getLinearEvent();
synchronizePoint2Line();
}
else
{
var candidateNodes = resNode.getElementsByTagName("candidates")[0].childNodes;
var numCandidates = candidateNodes.length;
//display list of candidates
if (numCandidates > 0)
{
var candidateNode = null;
var ppNode = null;
var pmNode = null;
var score = null;
var candidate = null;
res.candidates = new Array();
for (var i=0; i<candidateNodes.length; i++)
{
candidateNode = candidateNodes[i];
score = getObj(candidateNode, "score");
ppNode = candidateNode.getElementsByTagName("candidatePostmileSegment")[0];
pmNode = ppNode.getElementsByTagName("fromPostmile")[0];
pmFrom = new postmile();
pmFrom.loadFromXML(pmNode);
pmNode = ppNode.getElementsByTagName("toPostmile")[0];
pmTo = new postmile();
pmTo.loadFromXML(pmNode);
pp = new postmilePair();
pp.routeNumber = pmFrom.routeNumber;
pp.routeSuffixCode = pmFrom.routeSuffixCode;
pp.fromPostmile=pmFrom;
pp.toPostmile=pmTo;
candidate = new validatorCandidate();
candidate.score = score;
candidate.postmilePair = pp;
res.candidates[i] = candidate;
}
}
}
}
else
{
alert("No validation result returned for Postmile");
}
}
else
{
var errXML = xmlObj.responseXML.getElementsByTagName("faultstring")[0];
if (errXML != null)
{
var errStr = errXML.firstChild.data;
//clear error
errStr = errStr.replace(/java.rmi.RemoteException\:/, "");
alert(errStr);
}
else
{
if(window.ActiveXObject)
{
errXML = xmlObj.responseXML.xml;
}
else
{
errXML = new XMLSerializer().serializeToString(xmlObj.responseXML);
}
alert(errXML);
}
}
return res;
}
GISWebServiceSoapImp.prototype.getCoordinatesForPostmile = function(req) {
var pm = req.postmile;
var options = req.options;
var xmlObj = null;
var xmlResponse = null;
var outputCoordNode = null;
var outputDiv = document.getElementById('latLongResult');
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
return;
}
var requestXML = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"urn:webservice.postmile.lrs.gis.dot.ca.gov\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">";
requestXML += "<soapenv:Body><q0:getCoordinatesForPostmileParameters><q0:options><q0:alignmentType>" + options.alignmentType + "</q0:alignmentType><q0:offsetDistance>" + options.offsetDistance + "</q0:offsetDistance></q0:options><q0:postmileEvent>";
if(pm.alignmentCode != "")
requestXML += "<q0:alignmentCode>" + pm.alignmentCode + "</q0:alignmentCode>";
else requestXML += "<q0:alignmentCode xsi:nil=\"true\"/>";
requestXML += "<q0:countyCode>" + pm.countyCode + "</q0:countyCode>";
if(pm.postmilePrefixCode != "")
requestXML += "<q0:postmilePrefixCode>" + pm.postmilePrefixCode + "</q0:postmilePrefixCode>";
else requestXML += "<q0:postmilePrefixCode xsi:nil=\"true\"/>";
requestXML += "<q0:postmileValue>" + pm.postmileValue + "</q0:postmileValue><q0:routeNumber>" + pm.routeNumber + "</q0:routeNumber>";
if(pm.routeSuffixCode != "")
requestXML += "<q0:routeSuffixCode>" + pm.routeSuffixCode + "</q0:routeSuffixCode>";
else "<q0:routeSuffixCode xsi:nil=\"true\"/>";
requestXML += "</q0:postmileEvent><q0:postmileSegmentEvent xsi:nil=\"true\"/></q0:getCoordinatesForPostmileParameters></soapenv:Body></soapenv:Envelope>";
//var requestXML = " \
//<soap:Envelope \
// xmlns:q0=\"http://postmile.dot.ca.gov\" \
// xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" \
// xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \
// xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \
//<soap:Body> \
//<q0:getCoordinatesForPostmileParameters xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \
//<q0:options> \
//<q0:alignmentType>" + options.alignmentType + "</q0:alignmentType> \
//<q0:effectiveDate xsi:nil=\"true\"/> \
//<q0:offsetDistance>" + options.offsetDistance + "</q0:offsetDistance> \
//</q0:options> \
//<q0:postmileEvent> \
//<q0:countyCode>" + pm.countyCode + "</q0:countyCode> \
//<q0:postmileValue>" + pm.postmileValue + "</q0:postmileValue> \
//<q0:routeNumber>" + pm.routeNumber + "</q0:routeNumber>";
//if(pm.routeSuffixCode != "")
// requestXML += "<q0:routeSuffixCode>" + pm.routeSuffixCode + "</q0:routeSuffixCode>";
//if(pm.postmilePrefixCode != "")
// requestXML += "<q0:postmilePrefixCode>" + pm.postmilePrefixCode + "</q0:postmilePrefixCode>";
//if(pm.alignmentCode != "")
// requestXML += "<q0:alignmentCode>" + pm.alignmentCode + "</q0:alignmentCode>";
//requestXML += " \
//</q0:postmileEvent> \
//<q0:postmileSegmentEvent xsi:nil=\"true\"/> \
//</q0:getCoordinatesForPostmileParameters> \
//</soap:Body> \
//</soap:Envelope> \
//";
xmlObj.open ('POST',
WS_URL,
false);
xmlObj.setRequestHeader("Content-Type", "text/xml");
xmlObj.setRequestHeader("SOAPAction", WS_NS + "/" + "GetCoordinatesForPostmile");
xmlObj.send(requestXML);
var resp = null;
if (xmlObj.status == 200)
{
xmlResponse = xmlObj.responseXML;
resp = new pmResponse();
outputCoordNode = xmlResponse.getElementsByTagName("pointGeometry")[0];
if (outputCoordNode != null)
{
var pt = new lrspoint();
pt.x = getObj(outputCoordNode, "x");
pt.y = getObj(outputCoordNode, "y");
resp.pointGeometry = pt;
}
else
{
//return null geometry
resp.pointGeometry=null;
}
}
else
{
var errXML = xmlObj.responseXML.getElementsByTagName("faultstring")[0];
if (errXML != null)
{
var errStr = errXML.firstChild.data;
//clear error
errStr = errStr.replace(/java.rmi.RemoteException\:/, "");
alert(errStr);
}
else
{
if(window.ActiveXObject)
{
errXML = xmlObj.responseXML.xml;
}
else
{
errXML = new XMLSerializer().serializeToString(xmlObj.responseXML);
}
alert(errXML);
}
}
return(resp);
}
GISWebServiceSoapImp.prototype.getCoordinatesForPostmilePair = function(req) {
var xmlObj = null;
var xmlResponse = null;
var outputCoordNode = null;
var pp=req.postmilePair;
var pmFrom=pp.fromPostmile;
var pmTo=pp.toPostmile;
var options=req.options;
var res=null;
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
return;
}
// </getCoordinatesForPostmilePairParameters></soap:Body></soap:Envelope>POST /ModifiedTiger2009/services/PostmileWebService HTTP/1.1
//User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3615)
//Content-Type: text/xml; charset=utf-8
var requestXML = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body>";
requestXML += "<getCoordinatesForPostmilePairParameters xmlns=\"urn:webservice.postmile.lrs.gis.dot.ca.gov\">";
requestXML += "<options><alignmentType>" + options.alignmentType + "</alignmentType><effectiveDate xsi:nil=\"true\" /><offsetDistance>" + options.offsetDistance + "</offsetDistance></options>";
requestXML += "<postmileEvent xsi:nil=\"true\" />";
requestXML += "<postmileSegmentEvent>";
requestXML += "<fromPostmile><alignmentCode>" + pmFrom.alignmentCode + "</alignmentCode><countyCode>" + pmFrom.countyCode + "</countyCode><postmilePrefixCode>" + pmFrom.postmilePrefixCode + "</postmilePrefixCode><postmileValue>" + pmFrom.postmileValue + "</postmileValue><routeNumber>" + pp.routeNumber + "</routeNumber><routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode></fromPostmile>";
requestXML += "<routeNumber>" + pp.routeNumber + "</routeNumber><routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode>";
requestXML += "<toPostmile><alignmentCode>" + pmTo.alignmentCode + "</alignmentCode><countyCode>" + pmTo.countyCode + "</countyCode><postmilePrefixCode>" + pmTo.postmilePrefixCode + "</postmilePrefixCode><postmileValue>" + pmTo.postmileValue + "</postmileValue><routeNumber>" + pp.routeNumber + "</routeNumber><routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode></toPostmile>";
requestXML += "</postmileSegmentEvent>"
requestXML += "</getCoordinatesForPostmilePairParameters></soap:Body></soap:Envelope>";
// <routeNumber>" + pp.routeNumber + "</routeNumber> \
// <routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode> \
// <alignmentCode>" + pmFrom.alignmentCode + "</alignmentCode> \
// <postmileValue>" + pmFrom.postmileValue + "</postmileValue> \
// <postmilePrefixCode>" + pmFrom.postmilePrefixCode + "</postmilePrefixCode> \
// <countyCode>" + pmFrom.countyCode + "</countyCode> \
// </fromPostmile> \
// <soap:Body><getCoordinatesForPostmilePairParameters xmlns="urn:webservice.postmile.lrs.gis.dot.ca.gov"><options><alignmentType>1</alignmentType><effectiveDate xsi:nil="true" /><offsetDistance>0</offsetDistance></options><postmileEvent xsi:nil="true" /><postmileSegmentEvent><fromPostmile><alignmentCode xsi:nil="true" /><countyCode>LA</countyCode><postmilePrefixCode xsi:nil="true" /><postmileValue>0.092</postmileValue><routeNumber>405</routeNumber><routeSuffixCode xsi:nil="true" /></fromPostmile><routeNumber>405</routeNumber><routeSuffixCode xsi:nil="true" /><toPostmile><alignmentCode xsi:nil="true" /><countyCode>LA</countyCode><postmilePrefixCode xsi:nil="true" /><postmileValue>0.183</postmileValue><routeNumber>405</routeNumber><routeSuffixCode xsi:nil="true" /></toPostmile></postmileSegmentEvent></getCoordinatesForPostmilePairParameters></soap:Body></soap:Envelope>POST /ModifiedTiger2009/services/PostmileWebService HTTP/1.1
//User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3615)
//Content-Type: text/xml; charset=utf-8
// requestXML += <routeNumber>" + pp.routeNumber + "</routeNumber>
// <routeNumber>" + pp.routeNumber + "</routeNumber> \
// <routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode> \
// <toPostmile> \
// <routeNumber>" + pp.routeNumber + "</routeNumber> \
// <routeSuffixCode>" + pp.routeSuffixCode + "</routeSuffixCode> \
// <alignmentCode>" + pmTo.alignmentCode + "</alignmentCode> \
// <postmileValue>" + pmTo.postmileValue + "</postmileValue> \
// <postmilePrefixCode>" + pmTo.postmilePrefixCode + "</postmilePrefixCode> \
// <countyCode>" + pmTo.countyCode + "</countyCode> \
// </toPostmile> \
// </postmileSegmentEvent> \
// <options><effectiveDate xsi:nil=\"true\" /><offsetDistance>" + options.offsetDistance + "</offsetDistance><alignmentType>" + options.alignmentType + "</alignmentType></options>
// </getCoordinatesForPostmilePairParameters> \
// </soap:Body> \
// </soap:Envelope> \
// ";
xmlObj.open ("POST",
WS_URL,
false);
xmlObj.setRequestHeader("Content-Type", "text/xml");
xmlObj.setRequestHeader("SOAPAction", WS_NS + "/" + "GetCoordinatesForPostmilePair");
xmlObj.send(requestXML);
if (xmlObj.status == 200)
{
res = new pmResponse();
xmlResponse = xmlObj.responseXML;
outputGeom = xmlResponse.getElementsByTagName("polylineGeometry")[0];
if (outputGeom != null)
{
polyline = new lineCollection();
polyline.pointCollections = new Array();
var pointColls = outputGeom.getElementsByTagName("pointCollections")[0].childNodes;
for (var i=0; i<pointColls.length; i++)
{
var pointColl = pointColls[i];
var pointList = pointColl.getElementsByTagName("points")[0].childNodes;
segment = new pointCollection();
segment.points = new Array();
for(var j=0; j<pointList.length; j++)
{
var pointNode = pointList[j];
var pt = new lrspoint();
pt.x = parseFloat(getObj(pointNode, "x"));
pt.y = parseFloat(getObj(pointNode, "y"));
segment.points[j]=pt;
}
polyline.pointCollections[i]=segment;
}
res.polylineGeometry = polyline;
}
else
{
//return empty geometry
res.polylineGeometry=null;
}
}
else
{
var errXML = xmlObj.responseXML.getElementsByTagName("faultstring")[0];
if (errXML != null)
{
var errStr = errXML.firstChild.data;
//clear error
errStr = errStr.replace(/java.rmi.RemoteException\:/, "");
alert(errStr);
}
else
{
if(window.ActiveXObject)
{
errXML = xmlObj.responseXML.xml;
}
else
{
errXML = new XMLSerializer().serializeToString(xmlObj.responseXML);
}
alert(errXML);
}
}
return(res);
}
-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment