aimsNavigation.js
资源名称:arcims.rar [点击查看]
上传用户:gzuoyue
上传日期:2022-07-08
资源大小:177k
文件大小:10k
源码类别:
GIS编程
开发平台:
ASP/ASPX
- // aimsNavigation.js
- /*
- * JavaScript template file for ArcIMS HTML Viewer
- * dependent on aimsXML.js, ArcIMSparam.js, aimsCommon.js, aimsMap.js,
- * aimsLayers.js, aimsDHTML.js
- * aimsClick.js
- */
- aimsNavigationPresent=true;
- /*
- ***************************************************************************************
- Map Navigation functions - Zoom , Pan, etc.
- ***************************************************************************************
- */
- // convert mouse click xy's into map coordinates
- function getMapXY(xIn,yIn) {
- mouseX = xIn;
- pixelX = xDistance / iWidth;
- mapX = pixelX * mouseX + eLeft;
- mouseY = iHeight - yIn;
- pixelY = yDistance / iHeight;
- mapY = pixelY * mouseY + eBottom;
- }
- function getImageXY(e) {
- if (isNav) {
- mouseX=e.pageX;
- mouseY=e.pageY;
- } else {
- mouseX=event.clientX + document.body.scrollLeft;
- mouseY=event.clientY + document.body.scrollTop;
- }
- // subtract offsets from page left and top
- mouseX = mouseX-hspc;
- mouseY = mouseY-vspc;
- }
- function getOVImageXY(e) {
- if (isNav) {
- mouseX=e.pageX;
- mouseY=e.pageY;
- } else {
- mouseX=event.clientX + document.body.scrollLeft;
- mouseY=event.clientY + document.body.scrollTop;
- }
- // subtract offsets from page left and top
- mouseX = mouseX-ovHspc;
- mouseY = mouseY-ovVspc;
- }
- // get coordinates on ov map and reset display
- function ovMapClick(x,y) {
- var ovWidth = i2Width;
- var ovHeight = i2Height;
- var ovXincre = fullOVWidth / ovWidth;
- var ovYincre = fullOVHeight / ovHeight;
- var ovX = x;
- var ovY = ovHeight - y;
- var ovmapX = ovX * ovXincre + fullOVLeft;
- var ovmapY = ovY * ovYincre + fullOVBottom;
- saveLastExtent();
- eLeft = ovmapX - xHalf;
- eRight = ovmapX + xHalf;
- eTop = ovmapY + yHalf;
- eBottom = ovmapY - yHalf;
- sendMapXML();
- }
- // get click on OVmap and move display there
- function ovMap2Click(e) {
- getOVImageXY(e);
- mouseY = mouseY - ovBorderWidth;
- zooming=false;
- panning=false;
- selectBox=false;
- ovMapClick(mouseX,mouseY);
- }
- // zoom in around mouse click
- function zoomin(e) {
- getMapXY(mouseX,mouseY);
- var tempLeft=lastLeft;
- var tempRight=lastRight;
- var tempTop=lastTop;
- var tempBottom=lastBottom;
- saveLastExtent();
- eLeft = mapX - (xHalf/zoomFactor);
- eRight = mapX + (xHalf/zoomFactor);
- eTop = mapY + (yHalf/zoomFactor);
- eBottom = mapY - (yHalf/zoomFactor);
- sendMapXML();
- }
- // zoom out from mouse click
- function zoomout(e) {
- getMapXY(mouseX,mouseY);
- var tempLeft=lastLeft;
- var tempRight=lastRight;
- var tempTop=lastTop;
- var tempBottom=lastBottom;
- saveLastExtent();
- eLeft = mapX - (xDistance*zoomFactor/2);
- eRight = mapX + (xDistance*zoomFactor/2);
- eTop = mapY + (yDistance*zoomFactor/2);
- eBottom = mapY - (yDistance*zoomFactor/2);
- if (enforceFullExtent) {
- if ((eRight-eLeft)>fullWidth) {
- eLeft = fullLeft;
- eRight = fullRight;
- eTop = fullTop;
- eBottom = fullBottom;
- lastLeft=tempLeft;
- lastRight=tempRight;
- lastTop=tempTop;
- lastBottom=tempBottom;
- }
- }
- sendMapXML();
- }
- // get the coords at mouse position
- function getMouse(e) {
- window.status="";
- getImageXY(e);
- if (isIE) {
- if ((hasOVMap) && (ovIsVisible) && (ovMapIsLayer)) {
- if ((mouseX<i2Width+2) && (mouseY<i2Height)) {
- document.all.theTop.style.cursor = "default";
- } else {
- document.all.theTop.style.cursor = theCursor;
- }
- }
- }
- if ((mouseX>iWidth) || (mouseY>iHeight) || (mouseX<=0) ||(mouseY<=0) || ((hasOVMap) && (ovIsVisible) && (mouseX<i2Width+ovBoxSize) && (mouseY<i2Height+ovBoxSize) && (ovMapIsLayer))) {
- chkMouseUp(e);
- } else {
- mouseStuff();
- }
- return false;
- }
- function mouseStuff() {
- if ((zooming) || (selectBox)) {
- x2=mouseX;
- y2=mouseY;
- setClip();
- } else if (panning) {
- x2=mouseX;
- y2=mouseY;
- panMouse();
- }
- pixelX = xDistance / iWidth;
- mapX = pixelX * mouseX + eLeft;
- var theY = iHeight - mouseY;
- pixelY = yDistance / iHeight;
- mapY = pixelY * theY + eBottom;
- if (toolMode==20) {
- calcDistance(mapX,mapY);
- }
- else if (showXYs) {
- var u = Math.pow(10,numDecimals);
- var uX = Math.round(mapX * u) / u
- var uY= Math.round(mapY * u) / u
- var mouseString = msgList[52] + uX + " , " + uY + " -- " + msgList[53] + mouseX + " , " + mouseY;
- if (showScalePercent) mouseString = mouseString + " -- " + msgList[54] + mapScaleFactor;
- window.status = mouseString;
- }
- }
- // start zoom in.... box displayed
- function startZoomBox(e) {
- moveLayer("theMap",hspc,vspc);
- getImageXY(e);
- // keep it within the MapImage
- if ((mouseX<iWidth) && (mouseY<iHeight)) {
- if (zooming) {
- stopZoomBox(e);
- } else {
- x1=mouseX;
- y1=mouseY
- x2=x1+1;
- y2=y1+1;
- zleft=x1;
- ztop=y1;
- zbottom=y1;
- zright=x1
- boxIt(x1,y1,x2,y2);
- zooming=true;
- }
- }
- return false;
- }
- // stop zoom box display... zoom in
- function stopZoomBox(e) {
- zooming=false;
- hideLayer("zoomBoxTop");
- hideLayer("zoomBoxLeft");
- hideLayer("zoomBoxRight");
- hideLayer("zoomBoxBottom");
- if ((zright <zleft+2) && (zbottom < ztop+2)) {
- zoomin(e);
- } else {
- var tempLeft=lastLeft;
- var tempRight=lastRight;
- var tempTop=lastTop;
- var tempBottom=lastBottom;
- saveLastExtent();
- pixelX = xDistance / iWidth;
- var theY = iHeight - ztop;
- pixelY = yDistance / iHeight;
- eTop = pixelY * theY + eBottom;
- eRight = pixelX * zright + eLeft;
- eLeft = pixelX * zleft + eLeft;
- theY = iHeight - zbottom;
- pixelY = yDistance / iHeight;
- eBottom = pixelY * theY + eBottom;
- window.scrollTo(0,0);
- sendMapXML();
- }
- return true;
- }
- // start zoom out... box displayed
- function startZoomOutBox(e) {
- moveLayer("theMap",hspc,vspc);
- getImageXY(e);
- // keep it within the MapImage
- if ((mouseX<iWidth) && (mouseY<iHeight)) {
- if (zooming) {
- stopZoomOutBox(e);
- } else {
- x1=mouseX;
- y1=mouseY
- x2=x1+1;
- y2=y1+1;
- zleft=x1;
- ztop=y1;
- zbottom=y1;
- zright=x1
- boxIt(x1,y1,x2,y2);
- zooming=true;
- }
- }
- return false;
- }
- // stop zoom out box. . . zoom out
- function stopZoomOutBox(e) {
- zooming=false;
- hideLayer("zoomBoxTop");
- hideLayer("zoomBoxLeft");
- hideLayer("zoomBoxRight");
- hideLayer("zoomBoxBottom");
- if ((zright <zleft+2) && (zbottom < ztop+2)) {
- zoomout(e);
- } else {
- var tempLeft=eLeft;
- var tempRight=eRight;
- var tempTop=eTop;
- var tempBottom=eBottom;
- saveLastExtent();
- var zWidth = Math.abs(zright-zleft);
- var zHeight = Math.abs(ztop-zbottom);
- var xRatio = iWidth / zWidth;
- var yRatio = iHeight / zHeight;
- var xAdd = xRatio * xDistance / 2;
- var yAdd = yRatio * yDistance / 2;
- eLeft = eLeft - xAdd;
- eRight = eRight + xAdd;
- eTop = eTop + yAdd;
- eBottom = eBottom - yAdd;
- window.scrollTo(0,0);
- if (enforceFullExtent) {
- if ((eRight-eLeft)>fullWidth) {
- eLeft = fullLeft;
- eRight = fullRight;
- eTop = fullTop;
- eBottom = fullBottom;
- lastLeft=tempLeft;
- lastRight=tempRight;
- lastTop=tempTop;
- lastBottom=tempBottom;
- }
- }
- sendMapXML();
- }
- return true;
- }
- // clip zoom box layer to mouse coords
- function setClip() {
- var tempX=x1;
- var tempY=y1;
- if (x1>x2) {
- zright=x1;
- zleft=x2;
- } else {
- zleft=x1;
- zright=x2;
- }
- if (y1>y2) {
- zbottom=y1;
- ztop=y2;
- } else {
- ztop=y1;
- zbottom=y2;
- }
- if ((x1 != x2) && (y1 != y2)) {
- boxIt(zleft,ztop,zright,zbottom);
- }
- }
- // start pan.... image will move
- function startPan(e) {
- moveLayer("theMap",hspc,vspc);
- getImageXY(e);
- // keep it within the MapImage
- if ((mouseX<iWidth) && (mouseY<iHeight)) {
- if (panning) {
- stopPan(e);
- } else {
- x1=mouseX;
- y1=mouseY
- x2=x1+1;
- y2=y1+1;
- panning=true;
- }
- }
- return false;
- }
- // stop moving image.... pan
- function stopPan(e) {
- window.scrollTo(0,0);
- panning=false;
- var tempLeft=eLeft;
- var tempRight=eRight;
- var tempTop=eTop;
- var tempBottom=eBottom;
- //saveLastExtent();
- var ixOffset = x2-x1;
- var iyOffset = y1-y2;
- pixelX = xDistance / iWidth;
- var theY = iHeight - ztop;
- pixelY = yDistance / iHeight;
- var xOffset = pixelX * ixOffset;
- var yOffset = pixelY * iyOffset;
- eTop = eTop - yOffset;
- eRight = eRight - xOffset;
- eLeft = eLeft - xOffset;
- eBottom = eBottom - yOffset;
- if (enforceFullExtent) {
- if (eLeft < limitLeft) {
- eLeft = limitLeft;
- eRight = eLeft + xDistance;
- }
- if (eTop > limitTop) {
- eTop = limitTop;
- eBottom = eTop - yDistance;
- }
- if (eRight > limitRight) {
- eRight = limitRight;
- eLeft = eRight - xDistance;
- }
- if (eBottom < limitBottom) {
- eBottom = limitBottom;
- eTop = eBottom + yDistance;
- }
- }
- lastLeft = tempLeft;
- lastRight = tempRight;
- lastTop = tempTop;
- lastBottom = tempBottom;
- //hideLayer("theMap");
- if (hasLayer("theMapClicks")) {
- document.theClickImage.src = blankImage;
- }
- document.theImage.onload = resetPanImage;
- sendMapXML();
- return true;
- }
- // move map image with mouse
- function panMouse() {
- var xMove = x2-x1;
- var yMove = y2-y1;
- var cLeft = -xMove;
- var cTop = -yMove;
- var cRight = iWidth;
- var cBottom = iHeight;
- if (xMove>0) {
- cLeft = 0;
- cRight = iWidth - xMove;
- }
- if (yMove>0) {
- cTop = 0;
- cBottom = iHeight - yMove;
- }
- clipLayer2("theMap",cLeft,cTop,cRight,cBottom);
- moveLayer("theMap",xMove+hspc,yMove+vspc);
- if (hasLayer("theMapClicks")) {
- clipLayer2("theMapClicks",cLeft,cTop,cRight,cBottom);
- moveLayer("theMapClicks",xMove+hspc,yMove+vspc);
- }
- }
- // pan to mouse click
- function pan(e) {
- getMapXY(mouseX,mouseY);
- var tempLeft=lastLeft;
- var tempRight=lastRight;
- var tempTop=lastTop;
- var tempBottom=lastBottom;
- saveLastExtent();
- eLeft = mapX - xHalf;
- eRight = mapX + xHalf;
- eTop = mapY + yHalf;
- eBottom = mapY - yHalf;
- sendMapXML();
- }
- function setZoomColor() {
- setLayerBackgroundColor("zoomBoxTop", zoomBoxColor);
- setLayerBackgroundColor("zoomBoxLeft", zoomBoxColor);
- setLayerBackgroundColor("zoomBoxRight", zoomBoxColor);
- setLayerBackgroundColor("zoomBoxBottom", zoomBoxColor);
- setLayerBackgroundColor("zoomOVBoxTop", zoomBoxColor);
- setLayerBackgroundColor("zoomOVBoxLeft", zoomBoxColor);
- setLayerBackgroundColor("zoomOVBoxRight", zoomBoxColor);
- setLayerBackgroundColor("zoomOVBoxBottom", zoomBoxColor);
- }