mapstraction-route.js
Summary
No overview generated for 'mapstraction-route.js'
function MapstractionRouter(callback, api, error_callback) {
this.api = api;
this.callback = callback;
this.routers = new Object();
this.geocoders = new Object();
if(error_callback == null) {
this.error_callback = this.route_error
} else {
this.error_callback = error_callback;
}
this.svn_revision_string = '$Revision: 107 $';
this.addAPI(api);
}
MapstractionRouter.prototype.addAPI = function(api, options) {
me = this;
switch (api) {
case 'mapquest':
var proxyServerName = "";
var proxyServerPort = "";
var proxyServerPath = "mapquest_proxy/JSReqHandler.php";
var geocoderServerName = "geocode.access.mapquest.com";
var routerServerName = "route.access.mapquest.com";
var serverPort = "80";
var serverPath = "mq";
for(var sOptKey in options) {
switch(sOptKey) {
case 'var proxyServerName ':
proxyServerName = options.proxyServerName;
break;
case 'proxyServerPort':
proxyServerPort = options.proxyServerPort;
break;
case 'proxyServerPath':
proxyServerPath = options.proxyServerPath;
break;
case 'geocoderServerName':
geocoderServerName = options.geocoderServerName;
break;
case 'routerServerName ':
routerServerName = options.routerServerName ;
break;
case 'serverPort ':
serverPort = options.serverPort ;
break;
case 'var serverPath ':
serverPath = options.serverPath ;
break;
}
}
this.geocoders[api] = new MQExec(geocoderServerName, serverPath, serverPort, proxyServerName, proxyServerPath, proxyServerPort );
this.routers[api] = new MQExec(routerServerName, serverPath, serverPort, proxyServerName, proxyServerPath, proxyServerPort );
break;
default:
alert(api + ' not supported by mapstraction-router');
}
}
MapstractionRouter.prototype.swap = function(api) {
if (this.api == api) { return; }
this.api = api;
if (this.routers[this.api] == undefined) {
this.addAPI($(element),api);
}
}
MapstractionRouter.prototype.route_error = function(response) {
alert("Sorry, we were unable to route that address");
}
MapstractionRouter.prototype.route_callback = function(response, mapstraction_router) {
switch (mapstraction_router.api) {
case 'mapquest':
break;
}
}
MapstractionRouter.prototype.route = function(addresses) {
var api = this.api;
switch (api) {
case 'mapquest':
var waypoints = new MQLocationCollection();
var mapstraction_points = Array();
var gaCollection = new MQLocationCollection("MQGeoAddress");
var routeOptions = new MQRouteOptions();
for (var i=0;i<addresses.length;i++) {
var mqaddress = new MQAddress();
mqaddress.setStreet(addresses[i].street);
mqaddress.setCity(addresses[i].locality);
mqaddress.setState(addresses[i].region);
mqaddress.setPostalCode(addresses[i].postalcode);
mqaddress.setCountry(addresses[i].country);
this.geocoders[api].geocode(mqaddress, gaCollection);
var geoAddr = gaCollection.get(0);
waypoints.add(geoAddr);
var mapstraction_point = new Object();
mapstraction_point.street = geoAddr.getStreet();
mapstraction_point.locality = geoAddr.getCity();
mapstraction_point.region = geoAddr.getState();
mapstraction_point.country = geoAddr.getCountry();
var mqpoint = geoAddr.getMQLatLng();
mapstraction_point.point = new LatLonPoint(mqpoint.getLatitude(), mqpoint.getLongitude());
mapstraction_points.push(mapstraction_point);
}
var session = new MQSession();
var routeResults = new MQRouteResults();
var routeBoundingBox = new MQRectLL(new MQLatLng(),new MQLatLng());
var sessId = this.routers[api].createSessionEx(session);
this.routers[api].doRoute(waypoints,routeOptions,routeResults,sessId,routeBoundingBox);
var routeParameters = new Array();
routeParameters['results'] = routeResults;
routeParameters['bounding_box'] = routeBoundingBox;
routeParameters['session_id'] = sessId;
this.callback(mapstraction_points, routeParameters);
break;
default:
alert(api + ' not supported by mapstraction-router');
break;
}
}
MapstractionRouter.prototype.routePoints = function(points) {
var api = this.api;
switch (api) {
case 'mapquest':
var waypoints = new MQLocationCollection();
var routeOptions = new MQRouteOptions();
for (var i=0;i<points.length;i++) {
var geoAddr = new MQGeoAddress();
geoAddr.setMQLatLng(new MQLatLng(points[i].lat, points[i].lng));
waypoints.add(geoAddr);
}
var session = new MQSession();
var routeResults = new MQRouteResults();
var routeBoundingBox = new MQRectLL(new MQLatLng(),new MQLatLng());
var sessId = this.routers[api].createSessionEx(session);
this.routers[api].doRoute(waypoints,routeOptions,routeResults,sessId,routeBoundingBox);
var routeParameters = new Array();
routeParameters['results'] = routeResults;
routeParameters['bounding_box'] = routeBoundingBox;
routeParameters['session_id'] = sessId;
this.callback(points, routeParameters);
break;
default:
alert(api + ' not supported by mapstraction-router');
break;
}
}
Documentation generated by
JSDoc on Mon Dec 15 20:12:04 2008