<% ' Map Viewer (Third Edition) by Howie Sternberg at howies@snet.net. ' Map Viewer is placed in the public domain and is "Freeware". ' Map Viewer may be freely used and redistributed, is provided "AS-IS" ' without warranty of any kind, and there is no technical support provided. ' ------------------- ' Map Image variables ' ------------------- Dim blnLegendAutoExtend ' Map legend autoextend boolean Dim intLegendColumns ' Number of columns in legend Dim intLegendWidth ' Map legend width (pixels) Dim intLegendHeight ' Map legend height (pixels) ' ---------------------------- ' Map Image Functions and Subs ' ---------------------------- Sub setLegendSize(iWidth, iHeight, sPlacemement) Dim sList, aList Dim aMapLegendParams(2) aMapLegendParams(0) = Array("width", iWidth) aMapLegendParams(1) = Array("height", iHeight) aMapLegendParams(2) = Array("placement",sPlacemement) sList = transformXMLfromFileWithParameters("xml\properties.xml","xsl\propertieslegendsize.xsl",aMapLegendParams) 'response.write sList 'response.end aList = split(sList,"|") blnLegendAutoExtend = aList(0) intLegendColumns = aList(1) intLegendWidth = Cint(aList(2)) intLegendHeight = Cint(aList(3)) End Sub Sub setMapWidth(dMinX, dMaxX, dMinY, dMaxY) ' Calc and return map envelope dimensions dblMapWidthX = dMaxX - dMinX dblMapWidthY = dMaxY - dMinY End Sub Sub setMapDpi(sApplyPrint, sServiceDpi, iScreenPixelW, dScreenInchW) ' Set DPI to value appropriate for printed map image or image displayed on screen, ' depending on boolean value of appliestoprintedmap map property. If (Cbool(sApplyPrint)) Then ' 96 = default for map serice (dpi for images printed on paper) dblMapDpi = sServiceDpi Else ' 133.3 = 1600 / 12 (dpi for images displayed on screen) dblMapDpi = Cdbl(iScreenPixelW / dScreenInchW) End If End Sub Sub setMapScale(dMapW, dMapH, iImgW, iImgH, sMapUnits, dMapDpi) ' Calc and return map scale based on largest image dimension Dim dConstant If (dMapW > dMapH) Then dblMapScale = Cdbl(dMapW / iImgW) Else dblMapScale = Cdbl(dMapH / iImgH) End If Select Case Lcase(sMapUnits) Case "feet" dConstant = 12 ' inches per feet Case "meters" dConstant = 39.3701 ' inches per meter Case "decimal_degrees" dConstant = (39.3701 * 111195) ' inches per degree End Select ' 100000 = 86.8055555555498 * 96 * 12 dblMapScaleDenominator = dblMapScale * dMapDpi * dConstant dblMapScaleDenominator = Round(dblMapScaleDenominator) End Sub Function getMapScaleDenominator(dMapW, dMapH, iImgW, iImgH, sMapUnits, dMapDpi) ' Calc and return map scale based on largest image dimension Dim dConstant, dScale If (dMapW > dMapH) Then dScale = Cdbl(dMapW / iImgW) Else dScale = Cdbl(dMapH / iImgH) End If Select Case Lcase(sMapUnits) Case "feet" dConstant = 12 ' inches per feet Case "meters" dConstant = 39.3701 ' inches per meter Case "decimal_degrees" dConstant = (39.3701 * 111195) ' inches per degree End Select ' 100000 = 86.8055555555498 * 96 * 12 getMapScaleDenominator = dScale * dMapDpi * dConstant getMapScaleDenominator = Round(getMapScaleDenominator) End Function Function getLayerListAXL(aId,aVis) ' Format LAYERLIST element Dim i, sAXL sAXL = "" For i = 0 to Ubound(aId) sAXL = sAXL & "" Next sAXL = sAXL & "" getLayerListAXL = sAXL End Function Function getLegendAXL(sServiceType, sExtend, sCol, sImgW, sImgH, bRefreshMap, aId, aLeg) ' Format LEGEND element Dim i, sAXL, sSwatchW, sSwatchH If (strComp(sServiceType ,"imagemapserver",1) = 0) Then sAXL = "" sAXL = sAXL & "" For i = 0 to Ubound(aLeg) If Not CBool(aLeg(i)) Then sAXL = sAXL & "" End If Next sAXL = sAXL & "" Else sAXL = "" End If sAXL = sAXL & "" sAXL = sAXL & "" getLegendAXL = sAXL End Function Function getScaleBarAXL(sSeparator, sMapUnits, sScaleUnits, dMapW, dMapH, iImgW, iImgH) ' Format LAYER element that includes SCALEBAR Dim dScaleDist Dim sScalePrecision Dim sAXL Dim sList Dim aList Dim i If dMapW > dMapH Then dScaleDist = (dMapW / 5) Else dScaleDist = ((iImgW * (dMapH/iImgH)) / 5) End If Select Case Lcase(sMapUnits) Case "decimal_degrees" Select Case Lcase(sScaleUnits) Case "kilometers" dScaleDist = dScaleDist * 111.195 Case "meters" dScaleDist = dScaleDist * 111195 Case "miles" dScaleDist = dScaleDist * (111.195 / 1.6093) Case "feet" dScaleDist = (dScaleDist * (111.195 / 1.6093)) * 5280 End Select Case "feet" Select Case Lcase(sScaleUnits) Case "kilometers" dScaleDist = dScaleDist * 0.0003048 Case "meters" dScaleDist = dScaleDist * 0.3048 Case "miles" dScaleDist = dScaleDist / 5280 End Select Case "meters" Select Case Lcase(sScaleUnits) Case "kilometers" dScaleDist = dScaleDist * 0.001 Case "miles" dScaleDist = (dScaleDist / 3.281) / 5280 Case "feet" dScaleDist = dScaleDist / 3.281 End Select End Select Select Case Lcase(sScaleUnits) Case "miles","kilometers" sScalePrecision = 3 sList = "8000|4000|2000|1000|750|500|250|125|50|25|10|5|2.5|2|1|0.5|0.25|0.125" aList = split(sList,"|") For i = 0 to Ubound(aList) If (Cdbl(aList(i)) < Cdbl(dScaleDist)) Then dScaleDist = aList(i) Exit For End If Next Case "feet","meters" sScalePrecision = 0 End Select sAXL = "" & _ "" & _ "" & _ "" & _ "" getScaleBarAXL = sAXL End Function Function getHighlightLayerAXL(sServiceType, sColor, sPntType, iPntWidth, sLineType, iLineWidth, sPolyBnd, sPolyFillType, dPolyFillTrans, sLabelHowMany, sFont, sFontStyle, iFontSize, sFontColor, sFontPrintmode, sFeatureMinMax, sLabelMinMax, sName, sId, sFclass, dFltrMinX, dFltrMinY, dFltrMaxX, dFltrMaxY, sSubFields, sField, sFieldVal, sFieldDataType, sFieldOperator, sLogicalOperator, dMapScale, dMinScale, dMaxScale, sLabelField) ' Format LAYER element that highlights feature Dim i, sAXL, sAXL2, sWhere, sLogical, aField, aFieldVal, aFieldDataType, aOperator, aLogicalOperator 'response.write sField 'response.end aField = split(sField,"|") aFieldVal = split(sFieldVal,"|") aFieldDataType = split(sFieldDataType,"|") 'response.write sFieldDataType 'response.end aOperator = split(sFieldOperator,"|") aLogicalOperator = split(sLogicalOperator,"|") getHighlightLayerAXL = "" sAXL = "" sAXL = sAXL & "" For i = 0 to Ubound(aField) If (i > 0) Then sLogical = " " & aLogicalOperator(i) & " " End If If (strComp(aFieldDataType(i),"text",1) = 0) Then If (strComp(aOperator(i),"like",1) = 0) Then sWhere = sWhere & sLogical & "UPPER(" & aField(i) & ") " & aOperator(i) & " '%" & Ucase(aFieldVal(i)) & "%'" Else sWhere = sWhere & sLogical & "UPPER(" & aField(i) & ") " & aOperator(i) & " '" & Ucase(aFieldVal(i)) & "'" End If Elseif (strComp(aFieldDataType(i),"number",1) = 0) Then sWhere = sWhere & sLogical & aField(i) & aOperator(i) & aFieldVal(i) Elseif (strComp(aFieldDataType(i),"boolean",1) = 0) Then If (strComp(aFieldVal(i),"true",1) = 0) Then sWhere = sWhere & sLogical & "(" & aField(i) & ")" Else sWhere = sWhere & sLogical & "(not " & aField(i) & ")" End If Elseif (strComp(aFieldDataType(i),"date",1) = 0) Then sWhere = sWhere & sLogical & aField(i) & aOperator(i) & getDateFormatForQuery(aFieldVal(i),sServiceType) End If Next sAXL = sAXL & "" If ((IsNumeric(dFltrMinX)) and (IsNumeric(dFltrMinY)) and (IsNumeric(dFltrMaxX)) and (IsNumeric(dFltrMaxY))) Then If ((dFltrMinX <> 0) and (dFltrMinY <> 0) and (dFltrMaxX <> 0) and (dFltrMaxY <> 0)) Then sAXL = sAXL & "" sAXL = sAXL & "" sAXL = sAXL & "" End If End If sAXL = sAXL & "" If (strComp(sServiceType,"imagemapserver",1) = 0) Then If (strComp(sLabelField,"",1) <> 0) Then If (strComp(sLabelMinMax,"true",1) <> 0) Then If ((dMinScale < dMapScale) and (dMapScale < dMaxScale)) Then sAXL2 = sAXL2 & "" If (strComp(sFclass,"polygon",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"line",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"point",1) = 0) Then sAXL2 = sAXL2 & "" End If sAXL2 = sAXL2 & "" End If Else sAXL2 = sAXL2 & "" If (strComp(sFclass,"polygon",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"line",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"point",1) = 0) Then sAXL2 = sAXL2 & "" End If sAXL2 = sAXL2 & "" End If End If If (strComp(sFeatureMinMax,"true",1) <> 0) Then If ((dMinScale < dMapScale) and (dMapScale < dMaxScale)) Then sAXL2 = sAXL2 & "" If (strComp(sFclass,"polygon",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"line",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"point",1) = 0) Then sAXL2 = sAXL2 & "" End If sAXL2 = sAXL2 & "" End If Else sAXL2 = sAXL2 & "" If (strComp(sFclass,"polygon",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"line",1) = 0) Then sAXL2 = sAXL2 & "" Elseif (strComp(sFclass,"point",1) = 0) Then sAXL2 = sAXL2 & "" End If sAXL2 = sAXL2 & "" End If If (strComp(sAXL2,"",1) <> 0) Then sAXL = sAXL & "" & sAXL2 & "" End If End If sAXL = sAXL & "" getHighlightLayerAXL = sAXL End Function %>