A continuación de dejo uno de los métodos de su librería para navegación y que a mí más me ha servido. Te recomiendo que destripes y leas detenidamente su sección sobre herramientas de navegación para mapas:
Código:
mapApp.prototype.calcCoord = function(evt,ctmNode) {
var svgPoint = document.documentElement.createSVGPoint();
svgPoint.x = evt.clientX;
svgPoint.y = evt.clientY;
if (!document.documentElement.getScreenCTM) {
//undo the effect of transformations
if (ctmNode) {
var matrix = getTransformToRootElement(ctmNode);
}
else {
var matrix = getTransformToRootElement(evt.target);
}
svgPoint = svgPoint.matrixTransform(matrix.inverse().multiply(this.m));
}
else {
//case getScreenCTM is available
if (ctmNode) {
var matrix = ctmNode.getScreenCTM();
}
else {
var matrix = evt.target.getScreenCTM();
}
svgPoint = svgPoint.matrixTransform(matrix.inverse());
}
//undo the effect of viewBox and zoomin/scroll
return svgPoint;
}
La función getTransformToRootElement() va en otro archivo de funciones extras pero si usas Firefox por ejemplo no es necesario ya que admite los métodos DOM sobre la matriz, getCTM, getCurrentTranslation, Scale... etc.
También te recomiendo usarla con alguna otra librería, digamos de bajo nivel, como Prototype ya que te permitirá usar eventos, listeners, peticiones AJAX, etc, con compatibilidad de navegadores ;)