This example shows how to find records using an SQL-like expression:
// get layer Layer layer = map.getLayers().getLayerByName("Cities"); SearchDef searchDef = new SearchDef(); // select locations by the expression (see Appendix A) searchDef.setExpression( "Capital = \"Y\""); //specify the fields you want to retrieve (all fields by default) searchDef.setFields( "Area Name, State, County"); // returns the Recordset object Recordset rs = layer.search( searchDef);
The following example will display only the selected records on the map:
// get layer Layer layer = map.getLayers().getLayerByName("Cities"); Renderer renderer = layer.getRenderer(); // add new RendererItem RendererItem ritem = renderer.addItem(); // select locations by the expression (see Appendix A) ritem.setExpr( "Capital = \"Y\""); // set font attributes TextFont font = ritem.getFont(); Color color = new Color(0x0000FF); //blue font.setColor( color); font.setSize( 10); font.setBold(true); ritem.setFont( font); ritem.setFontMask( RendererItem.FONT_COLOR | RendererItem.FONT_SIZE | RendererItem.FONT_BOLD); // set symbol attributes Symbol symbol = ritem.getSymbol(); symbol.setSymbolStyle("std:circle"); // see Appendix D color = new Color( 0xFF0000); //red symbol.setColor( Symbol.SYMBOL_COLOR, color); symbol.setSize( 16); ritem.setSymbol( symbol); ritem.setSymbolMask( RendererItem.SYMBOL_COLOR1 | RendererItem.SYMBOL_STYLE | RendererItem.SYMBOL_SIZE); ritem.setMinMaxZoomLevel( RendererItem.MIN_ZOOM_LEVEL, RendererItem.MAX_ZOOM_LEVEL); // add new RendererItem RendererItem ritem2 = renderer.addItem(); // select all records except the records specified above ritem2.setExpr( "Capital <> \"Y\""); //see Appendix A // hide symbols and labels Symbol symbol2 = ritem2.getSymbol(); symbol2.setSymbolStyle("std:null"); //see Appendix D ritem2.setLabelVisible( false); ritem2.setSymbolMask( RendererItem.SYMBOL_STYLE); ritem2.setMinMaxZoomLevel( RendererItem.MIN_ZOOM_LEVEL, RendererItem.MAX_ZOOM_LEVEL);
This example shows another way to do the same thing.
1) Make all the symbols of the layer invisible: start Map Author, open map, select layer,
then Edit -> Layer Properties -> Multiple -> Select -> All -> Symbol/Line/Fill ->
uncheck Visible;
2) Use this code to display the specified locations:
// get layer Layer layer = map.getLayers().getLayerByName("Cities"); Renderer renderer = layer.getRenderer(); // add new RendererItem RendererItem ritem = renderer.addItem(); // select locations by the expression (see Appendix A) ritem.setExpr( "Capital = \"Y\""); // set font attributes TextFont font = ritem.getFont(); Color color = new Color(0x0000FF); //blue font.setColor( color); font.setSize( 10); font.setBold(true); ritem.setFont( font); ritem.setFontMask( RendererItem.FONT_COLOR | RendererItem.FONT_SIZE | RendererItem.FONT_BOLD); // set symbol attributes Symbol symbol = ritem.getSymbol(); symbol.setSymbolStyle("std:circle"); //see Appendix D color = new Color( 0xFF0000); //red symbol.setColor( Symbol.SYMBOL_COLOR, color); symbol.setSize( 16); ritem.setSymbol( symbol); ritem.setSymbolMask( RendererItem.SYMBOL_COLOR1 | RendererItem.SYMBOL_STYLE | RendererItem.SYMBOL_SIZE); ritem.setMinMaxZoomLevel( RendererItem.MIN_ZOOM_LEVEL, RendererItem.MAX_ZOOM_LEVEL);
The result should look like this:
Here is a brief explanation of how to use the external data source feature. The RouteMAP IMS 3.0 supports the following external databases: dBASE, Microsoft Access, SQL Server, and Oracle.
A) Installation Instructions:
[Data Source Name] DsDllPath=ExtDS.dll
B) Usage
ParameterList ds = new ParameterList(); ds.add("DataSource", "Data Source Name" ); // Select the Fields from your database that you would like displayed during a // Find Nearest. The Label/Name, Lat, Long fields are required. The rest are optional. String strSQL = "select Name, latitude, longitude,Address,City,State,Zip from tableName";
// Note: the actual name of the dbf file is in the SQL Query // IE. If you have the file "c:\my_database\database.dbf" Your // SQL Query would look like "select name, latitude, longitude from database" // and the "FilePath" would be "c:\\my_database\\" ds.add("DataSourceType","File"); ds.add("ODBCDriver","Microsoft dBASE Driver (*.dbf)"); ds.add("FilePath","d:\\my_database\\");
ds.add("DataSourceType","File"); ds.add("ODBCDriver","Microsoft Access Driver (*.mdb)"); ds.add("FilePath","c:\\my_database\\database.mdb");
ds.add("DataSourceType","SQL"); ds.add("ODBCDSN","Your ODBC Data Source Name"); ds.add("ODBCUsername","Username"); ds.add("ODBCPassword","");
ds.add("SQLStatement",strSQL); ds.add("IconFile","c:\\my_icons\\icon1.bmp"); ds.add("LabelField","Name"); ds.add("LatField","latitude"); ds.add("LonField","longitude");
ds.add("UrlField",""); ds.add("IconSize","8"); // Default is 10
map.getLayers().addDynamicLayer(ds);