📄 svgexporter.java
字号:
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".5" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
} else if(sFillType.equals(WebSimplePolygonSymbol.CROSS)) {
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "4" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "4" }});
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "4" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "4" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
return svgPattern(new String[][] {
{ SVGSyntax.SVG_ID_ATTRIBUTE, patternID },
{ SVGSyntax.SVG_X_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_STROKE_ATTRIBUTE, ColorEncoder.toSVG(symbol.getFillColor()) },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".2" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
} else if(sFillType.equals(WebSimplePolygonSymbol.DIAGCROSS)) {
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "0" }});
return svgPattern(new String[][] {
{ SVGSyntax.SVG_ID_ATTRIBUTE, patternID },
{ SVGSyntax.SVG_X_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_STROKE_ATTRIBUTE, ColorEncoder.toSVG(symbol.getFillColor()) },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".2" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
} else if(sFillType.equals(WebSimplePolygonSymbol.HORIZONTAL)) {
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "0" }});
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
return svgPattern(new String[][] {
{ SVGSyntax.SVG_ID_ATTRIBUTE, patternID },
{ SVGSyntax.SVG_X_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_STROKE_ATTRIBUTE, ColorEncoder.toSVG(symbol.getFillColor()) },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".2" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
} else if(sFillType.equals(WebSimplePolygonSymbol.VERTICAL)) {
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
return svgPattern(new String[][] {
{ SVGSyntax.SVG_ID_ATTRIBUTE, patternID },
{ SVGSyntax.SVG_X_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "8" },
{ SVGSyntax.SVG_STROKE_ATTRIBUTE, ColorEncoder.toSVG(symbol.getFillColor()) },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".2" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
} else if(sFillType.equals(WebSimplePolygonSymbol.GRAY)) {
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "1" }});
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "2" }});
return svgPattern(new String[][] {
{ SVGSyntax.SVG_ID_ATTRIBUTE, patternID },
{ SVGSyntax.SVG_X_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_STROKE_ATTRIBUTE, ColorEncoder.toSVG(symbol.getFillColor()) },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".5" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
} else if(sFillType.equals(WebSimplePolygonSymbol.LIGHTGRAY)) {
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "1" }});
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "2" }});
return svgPattern(new String[][] {
{ SVGSyntax.SVG_ID_ATTRIBUTE, patternID },
{ SVGSyntax.SVG_X_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_STROKE_ATTRIBUTE, ColorEncoder.toSVG(symbol.getFillColor()) },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".5" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
} else if(sFillType.equals(WebSimplePolygonSymbol.DARKGRAY)) {
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "1" }});
lineAtts.add(new String[][] {
{ SVGSyntax.SVG_X1_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_X2_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_Y2_ATTRIBUTE, "2" }});
return svgPattern(new String[][] {
{ SVGSyntax.SVG_ID_ATTRIBUTE, patternID },
{ SVGSyntax.SVG_X_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_Y_ATTRIBUTE, "0" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "2" },
{ SVGSyntax.SVG_STROKE_ATTRIBUTE, ColorEncoder.toSVG(symbol.getFillColor()) },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, ".5" },
{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
}, lineAtts);
}
}
}
return SVGSyntax.SVG_NONE_VALUE;
}
public StringBuffer svgG(IGraphicElementCollection elements) {
StringBuffer buf = new StringBuffer();
if(elements != null) {
for(int i = 0; i < elements.size(); i++) {
GraphicElement element = elements.get(i);
WebSymbol symbol = element.getSymbol();
WebGeometry webGeo = SVGUtils.ensureWGS84(element.getGeometry());
if(symbol instanceof WebSimpleMarkerSymbol) {
WebSimpleMarkerSymbol smSymbol = (WebSimpleMarkerSymbol) symbol;
int markerType = smSymbol.getMarkerType();
_svgSymbols.put(new Integer(markerType), _svgSymbol[markerType]);
buf.append(svgG((WebPoint)webGeo, smSymbol));
} else if(symbol instanceof WebPictureMarkerSymbol)
buf.append(svgG((WebPoint)webGeo, (WebPictureMarkerSymbol)symbol));
else if(symbol instanceof WebTrueTypeMarkerSymbol)
buf.append(svgG((WebPoint)webGeo, (WebTrueTypeMarkerSymbol)symbol));
else if(symbol instanceof WebSimplePolygonSymbol)
buf.append(svgG((WebPolygon)webGeo, (WebSimplePolygonSymbol)symbol));
else if(symbol instanceof WebSimpleLineSymbol) {
if(webGeo instanceof WebArc)
buf.append(svgG((WebArc)webGeo, (WebSimpleLineSymbol)symbol));
else
buf.append(svgG((WebPolyline)webGeo, (WebSimpleLineSymbol)symbol));
}
}
}
return buf;
}
// Generates SVG
public String export(List<IGraphicElementCollection> geCollectionList) {
StringBuffer buf = new StringBuffer();
String[][] svgAtts = {
{ SVGSyntax.SVG_VERSION_ATTRIBUTE, "1.1" }, { SVGSyntax.SVG_CONTENT_STYLE_TYPE_ATTRIBUTE, "text/css" }, { SVGSyntax.SVG_CONTENT_SCRIPT_TYPE_ATTRIBUTE, "text/ecmascript" },
{ "xmlns:xlink", "http://www.w3.org/1999/xlink" }, { "xmlns", "http://www.w3.org/2000/svg" },
{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "360" }, { SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "180" }, // { "viewBox", "0 0 360 180" },
{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, "1" }, { SVGSyntax.SVG_STROKE_MITERLIMIT_ATTRIBUTE, "10" }, { SVGSyntax.SVG_STROKE_ATTRIBUTE, "black" }, { SVGSyntax.SVG_STROKE_DASHARRAY_ATTRIBUTE, SVGSyntax.SVG_NONE_VALUE },
{ SVGSyntax.SVG_STROKE_DASHOFFSET_ATTRIBUTE, "0" }, { SVGSyntax.SVG_STROKE_OPACITY_ATTRIBUTE, "1" }, { SVGSyntax.SVG_STROKE_LINECAP_ATTRIBUTE, "square" }, { SVGSyntax.SVG_STROKE_LINEJOIN_ATTRIBUTE, "miter" },
{ SVGSyntax.SVG_FONT_FAMILY_ATTRIBUTE, "'Dialog'" }, { SVGSyntax.SVG_FONT_STYLE_ATTRIBUTE, "normal" }, { SVGSyntax.SVG_FONT_SIZE_ATTRIBUTE, "12" }, { SVGSyntax.SVG_FONT_WEIGHT_ATTRIBUTE, "normal" },
{ SVGSyntax.SVG_FILL_ATTRIBUTE, "black" }, { SVGSyntax.SVG_FILL_OPACITY_ATTRIBUTE, "1" },
{ SVGSyntax.SVG_TEXT_RENDERING_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_SHAPE_RENDERING_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_IMAGE_RENDERING_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_COLOR_RENDERING_ATTRIBUTE, "auto" },
{ SVGSyntax.SVG_COLOR_INTERPOLATION_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_ZOOM_AND_PAN_ATTRIBUTE, "magnify" }, { SVGSyntax.SVG_PRESERVE_ASPECT_RATIO_ATTRIBUTE, "xMidYMid meet" }
};
Tag tagRoot = new Tag(SVGSyntax.SVG_SVG_TAG, svgAtts, null, true);
buf.append(svgHeader()).append(tagRoot.open()).append(svgComment("Generated by ESRI Map Viewer Cheyenne"));
if(isInitialized() && geCollectionList != null) { // Start generating geometries...
StringBuffer gs = new StringBuffer();
_svgSymbols = new Hashtable<Integer,String>();
_svgPatterns = new ArrayList<String>();
for(Iterator<IGraphicElementCollection> i = geCollectionList.iterator(); i.hasNext();) {
gs.append(svgG(i.next()));
}
if(gs.length() > 0) {
Tag tagG = new Tag(SVGSyntax.SVG_G_TAG, null, null, true);
buf.append(svgMetadata()).append(svgDefs()).append(tagG.open()).append(gs).append(tagG.close());
}
} // Finish generating geometries...
buf.append(tagRoot.close()); // Close SVG root
return buf.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -