📄 maptest.js
字号:
}
}
function svgMouseUp(evt)
{
if(!IsDoing) return;
switch(MouseCMD)
{
case null:
break;
case "ZOOM":
IsDoing=false;
var x=parseFloat(ZoomRect.getAttributeNS(null,"x"));
var y=parseFloat(ZoomRect.getAttributeNS(null,"y"));
var w=evt.clientX*WAmp+vbCX-x;
var h=evt.clientY*HAmp+vbCY-y;
var cx=x+w/2;
var cy=y+h/2;
if(w<=0||h<=0)
{
CurrentAmp=Math.min(CurrentAmp+ZoomStep,MaxAmp);
cx=evt.clientX*WAmp+vbCX;
cy=evt.clientY*HAmp+vbCY;
}
else
{
ZoomRect.setAttributeNS(null,"width",w);
ZoomRect.setAttributeNS(null,"height",h);
CurrentAmp=Math.min(SVGW/w,SVGH/h,MaxAmp);
}
w=SVGW/CurrentAmp; h=SVGH/CurrentAmp; x=cx-w/2; y=cy-h/2;
x=Math.min(Math.max(x,0),vbMaxW-w);
y=Math.min(Math.max(y,0),vbMaxH-h);
MainSVG.setAttributeNS(null,"viewBox",x+" "+y+" "+w+" "+h);
ZoomRect.setAttributeNS(null,"visibility","hidden");
endZoom();
break;
case "PAN":
IsDoing=false;
break;
case"RECT":
IsDoing=false;
var x=parseFloat(ZoomRect.getAttributeNS(null,"x"));
var y=parseFloat(ZoomRect.getAttributeNS(null,"y"));
var w=evt.clientX*WAmp+vbCX-x;
var h=evt.clientY*HAmp+vbCY-y;
var cx=x+w/2;
var cy=y+h/2;
if(w<=0||h<=0)
{
CurrentAmp=Math.min(CurrentAmp+ZoomStep,MaxAmp);
cx=evt.clientX*WAmp+vbCX;
cy=evt.clientY*HAmp+vbCY;
}
else
{
ZoomRect.setAttributeNS(null,"width",w);
ZoomRect.setAttributeNS(null,"height",h);
CurrentAmp=Math.min(SVGW/w,SVGH/h,MaxAmp);
}
x=x2lon(x);
y=y2lat(y);
w = x2lon(evt.clientX*WAmp+vbCX);
h = y2lat(evt.clientY*HAmp+vbCY);
//alert("右下角坐标"+w+","+h+"/左上角坐标"+x+","+y);
ZoomRect.setAttributeNS(null,"visibility","hidden");
parent.document.all.LoadingImg.style.visibility = "visible";
parent.RectFind(x,y,w,h);
setCMD("PAN");
break;
}
}
function endZoom()
{
getCurrentVB(); //AntiZoom();
parent.PullZoomBtn();
}
function updateCheckbox(parentobj,name)
{
parentobj.checked=(SVGDoc.getElementById(name).getAttributeNS(null,"visibility")=="visible");
}
function resetZoom()
{
MainSVG.setAttributeNS(null,"viewBox","0 0 "+vbMaxW+" "+vbMaxH);
endZoom();
parent.document.all.MiniRect.style.visibility="hidden";
}
parent.resetZoom=resetZoom;
function goEast()
{
getCurrentVB();
x=Math.min(Math.max(vbCX+MoveStep,0),vbMaxW-vbCW);
MainSVG.setAttributeNS(null,"viewBox",x+" "+vbCY+" "+vbCW+" "+vbCH);
parent.MiniRect_Refresh(x/vbMaxW,vbCY/vbMaxH,vbCW/vbMaxW,vbCH/vbMaxH);
}
parent.goEast=goEast;
function goWest()
{
getCurrentVB();
x=Math.min(Math.max(vbCX-MoveStep,0),vbMaxW-vbCW);
MainSVG.setAttributeNS(null,"viewBox",x+" "+vbCY+" "+vbCW+" "+vbCH);
parent.MiniRect_Refresh(x/vbMaxW,vbCY/vbMaxH,vbCW/vbMaxW,vbCH/vbMaxH);
}
parent.goWest=goWest;
function goNorth()
{
getCurrentVB();
y=Math.min(Math.max(vbCY-MoveStep,0),vbMaxH-vbCH);
MainSVG.setAttributeNS(null,"viewBox",vbCX+" "+y+" "+vbCW+" "+vbCH);
parent.MiniRect_Refresh(vbCX/vbMaxW,y/vbMaxH,vbCW/vbMaxW,vbCH/vbMaxH);
}
parent.goNorth=goNorth;
function goSouth()
{
getCurrentVB();
y=Math.min(Math.max(vbCY+MoveStep,0),vbMaxH-vbCH);
MainSVG.setAttributeNS(null,"viewBox",vbCX+" "+y+" "+vbCW+" "+vbCH);
parent.MiniRect_Refresh(vbCX/vbMaxW,y/vbMaxH,vbCW/vbMaxW,vbCH/vbMaxH);
}
parent.goSouth=goSouth;
function ZoomTo(value)
{
if(value==0) resetZoom();
else
{
getCurrentVB();
var cx=vbCX+vbCW/2;
var cy=vbCY+vbCH/2;
CurrentAmp=value*(MaxAmp-MinAmp)/100+MinAmp;
w=SVGW/CurrentAmp; h=SVGH/CurrentAmp; x=cx-w/2; y=cy-h/2;
x=Math.min(Math.max(x,0),vbMaxW-w);
y=Math.min(Math.max(y,0),vbMaxH-h);
MainSVG.setAttributeNS(null,"viewBox",x+" "+y+" "+w+" "+h);
endZoom();
}
}
parent.ZoomTo=ZoomTo;
var RulerBtnPressed=false;
var IsMessuring=false;
function RulerBtnClick(evt)
{
RulerBtnPressed=!RulerBtnPressed;
if(RulerBtnPressed)
{
parent.PullZoomBtn();
setCMD(null);
parent.document.all.RulerBtn.disabled=true;
parent.document.all.RulerBtn.src="../images/Map/ruler1.gif";
rulerbck.setAttributeNS(null,"pointer-events","visiblePainted");
}
}
parent.RulerBtnClick=RulerBtnClick;
function rulerStart(evt)
{
if(!RulerBtnPressed) return;
switch(evt.detail)
{
case 1:
getCurrentVB();
var xx=vbCX+evt.clientX*WAmp;
var yy=vbCY+evt.clientY*HAmp;
if(!IsMessuring)
{
IsMessuring=true;
linepts="M"+xx+" "+yy;
}
else
{
linepts+=" L"+xx+" "+yy;
}
break;
default:
IsMessuring=false; RulerBtnPressed=false;
parent.document.all.RulerBtn.disabled=false;
parent.document.all.RulerBtn.src="../images/Map/ruler.gif";
rulerbck.setAttributeNS(null,"pointer-events","none");
rulerline.setAttributeNS(null,'d','');
setCMD("PAN");
hideinfotip(evt);
break;
}
}
function rulerMessuring(evt)
{
if(IsMessuring)
{
getCurrentVB();
var xx=vbCX+evt.clientX*WAmp;
var yy=vbCY+evt.clientY*HAmp;
rulerline.setAttributeNS(null,'d',linepts+" L"+xx+" "+yy);
showinfotip(evt,parseFloat(parseInt(rulerline.getTotalLength()*Scaler)/1000)+"千米");
//parent.document.all.km.value=parseFloat(parseInt(rulerline.getTotalLength()*Scaler)/1000);
}
}
/*获得一段路径的长度*/
function getlength(pathname)
{
if (len == 0)
{
var myline=SVGDoc.getElementById(pathname);
len = myline.getTotalLength();
traceLayer.removeChild(myline);
len = parseInt(len*3);
}
return (len);
}
parent.getlength = getlength;
function showinfotip (evt,info)
{
var splitString;
splitString = info.split('\n');
nbsplit = splitString.length;
var svgdocElement = SVGDoc.getDocumentElement();
var scale = svgdocElement.getCurrentScale();
var translateX = svgdocElement.getCurrentTranslate().getX();
var translateY = svgdocElement.getCurrentTranslate().getY();
var infotip = 'infotip';
var infotiprect = 'infotipRect';
var svgobj = SVGDoc.getElementById (infotip);
var svgobjtxt = svgobj;
svgobj.setAttributeNS(null,'x', Math.round(evt.getClientX()+15));
svgobj.setAttributeNS(null,'y', Math.round(evt.getClientY()));
var svgstyle = svgobj.getStyle();
svgstyle.setProperty ('visibility', 'visible');
svgstyle.setProperty('font-size', 12);
svgobj1 = svgobj.getFirstChild();
if (nbsplit == 1)
{
svgobj1.setData(info);
}
else
{
svgobj1.setData(splitString[0]);
for (k=1; k<nbsplit ; k++)
{
myspan = SVGDoc.createElement('tspan');
myspan.setAttributeNS(null,'dy', 1.2+'em');
myspan.setAttributeNS(null,'id', k);
myspan.setAttributeNS(null,'x', Math.round(evt.getClientX()+15));
myspan.appendChild(SVGDoc.createTextNode(splitString[k]));
svgobj.appendChild(myspan);
}
}
var txtlen=1.2*svgobj.getBBox().width;
var svgobj = SVGDoc.getElementById (infotiprect);
svgobj.setAttributeNS(null,'x', (Math.round(evt.getClientX()+12.5)));
svgobj.setAttributeNS(null,'y', (Math.round(evt.getClientY()-10)));
svgobj.setAttributeNS(null,'width', txtlen);
if (nbsplit >1) svgobj.setAttributeNS(null,'height',1.2*nbsplit+'em');else svgobj.setAttribute ('height',1+'em');
svgobj.setAttributeNS(null,'rx', 3);
svgobj.setAttributeNS(null,'ry', 3);
var svgstyle = svgobj.getStyle();
svgstyle.setProperty('visibility', 'visible');
}
function hideinfotip(evt)
{
var svgobj = SVGDoc.getElementById ("infotip");
svgobj.getStyle().setProperty ('visibility', 'hidden');
while(svgobj.lastChild.tagName=="tspan")
{
try
{
svgobj.removeChild(svgobj.lastChild);
}
catch(e)
{
alert(e);
}
}
SVGDoc.getElementById("infotipRect").getStyle().setProperty ('visibility', 'hidden');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -