发表用户:mxx2008
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=9&ID=11998
信息原始来源:原创

文章标题:Mapxtreme for Windows中用JavaScript实现拉框缩放的函数奉献
请把该函数覆盖toolbar.asp中的
function toolbarhandler(byref dbldistancein, byref dblmapzoomout)
 on error resume next 

 dim stritemlayer
 dim objinfoitems
 dim brc
 dim dblmapx1, dblmapy1
 dim dblmapx2, dblmapy2
 dim dblmapdistance
 dim fnewzoom
    dim dblnewzoom, dblcenterx, dblcentery  '加入必要的变量
 dblmapdistance = 0 'initialize for display

 ' determine how the page was submitted.

 if ((strcomp(request.form(cmapx_mouseup), "0", vbtextcompare) = 0) and _
  (strcomp(request.form(cmapy_mouseup), "0", vbtextcompare) = 0)) then 

  'upper left corner of map image was selected on submit.
  exit function

 end if

 if (request.form(cmapx_mouseup).count = 1) and (request.form(cmapy_mouseup).count = 1) then
  'the map was clicked.

  if (strcomp(request.form(csttomaptool), csttomaptoolquerydata, vbtextcompare) = 0) then
   'the form was submitted using the info tool.
   set objinfoitems = infopoint(request.form(cmapx_mouseup), _
    request.form(cmapy_mouseup), stritemlayer)

   'create an html page to display point-information
   createinfohtml objinfoitems, stritemlayer

  elseif (strcomp(request.form(csttomaptool), csttomaptoolgetdist, vbtextcompare) = 0) then
   'the form was submitted using the distance tool.

   'get earth coords of the first point
   brc = convertscreencoordstomap(request.form(cmapx_mousedown), request.form(cmapy_mousedown), _
    dblmapx1, dblmapy1)

   'get earth coords of the second point
   brc = convertscreencoordstomap(request.form(cmapx_mouseup), request.form(cmapy_mouseup), _
    dblmapx2, dblmapy2)

   brc = calcmapdistance(dblmapx1, dblmapy1, dblmapx2, dblmapy2, dblmapdistance)
   dbldistancein = round(dblmapdistance,3) 

  else
   if request.form(csttomaptool) = csttomaptoolzoomin then
       if request.form(cmapx_mouseup)=request.form(cmapx_mousedown) then 
    adjustmap czoomintool, request.form(cmapx_mouseup), request.form(cmapy_mouseup)'原有示例代码
    else
    brc = convertscreencoordstomap(request.form(cmapx_mousedown), request.form(cmapy_mousedown), dblmapx1, dblmapy1)

                brc = convertscreencoordstomap(request.form(cmapx_mouseup), request.form(cmapy_mouseup), dblmapx2, dblmapy2)
                brc = calcmapdistance(dblmapx1, 0, dblmapx2, 0, dblmapdistance)
                dblnewzoom = round(dblmapdistance,3) 
                dblcenterx = dblmapx1 + (dblmapx2 - dblmapx1)/2
                dblcentery = dblmapy2 + (dblmapy1 - dblmapy2)/2
                brc = setmapcenterandzoomto(dblcenterx, dblcentery, dblnewzoom)
    end if
    '''''''''''''''''''''''''拉框放大成功
   elseif request.form(csttomaptool) = csttomaptoolzoomout then
       if request.form(cmapx_mouseup)=request.form(cmapx_mousedown) then  
    adjustmap czoomouttool, request.form(cmapx_mouseup), request.form(cmapy_mouseup)'屏蔽掉原来的点缩小模式
    else
                brc = convertscreencoordstomap(request.form(cmapx_mousedown), request.form(cmapy_mousedown), dblmapx1, dblmapy1)
                brc= convertscreencoordstomap(request.form(cmapx_mouseup), request.form(cmapy_mouseup), dblmapx2, dblmapy2)
                brc = calcmapdistance(dblmapx1, 0, dblmapx2, 0, dblmapdistance)
                dblnewzoom = round(dblmapdistance,3) 
                brc = getmapzoom(fnewzoom)  '当选择缩小时的放大大小
                dblnewzoom=fnewzoom*fnewzoom/dblnewzoom

                dblcenterx = dblmapx1 + (dblmapx2 - dblmapx1)/2
                dblcentery = dblmapy2 + (dblmapy1 - dblmapy2)/2
                brc = setmapcenterandzoomto(dblcenterx, dblcentery, dblnewzoom)


    end if
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''加入新代码
    
   else
       if request.form(cmapx_mouseup)=request.form(cmapx_mousedown) then 
    adjustmap crecentertool, request.form(cmapx_mouseup), request.form(cmapy_mouseup)'此为漫游
    else
                brc = convertscreencoordstomap(request.form(cmapx_mousedown), request.form(cmapy_mousedown), dblmapx1, dblmapy1)
                brc= convertscreencoordstomap(request.form(cmapx_mouseup), request.form(cmapy_mouseup), dblmapx2, dblmapy2)
                brc = calcmapdistance(dblmapx1, 0, dblmapx2, 0, dblmapdistance)

                dblcenterx = dblmapx1 + (dblmapx2 - dblmapx1)/2
                dblcentery = dblmapy2 + (dblmapy1 - dblmapy2)/2
                brc = setmapcenter(dblcenterx, dblcentery) 
    end if  
   end if

  end if

  'write the map zoom regardless of whether point-info, distance, zoomin, zoom-out, 
  'or recenter tool was used to submit the map.
  brc = getmapzoom(dblmapzoomout)

 else
  ' form not submitted using the standard toolbar, do nothing.
 end if

 if err then 
  toolbarhandler = false
  if not haveerror() then
   seterror "toolbarhandler", err.number, err.description
  end if
 else
  toolbarhandler = true
 end if 

end function
几经调试,完全成功,不过需要前面那位大侠的javacript的拉框显示操作才能完美无缝!