About Swift
|
Swift's meaning:
Swift "Swift Team" for the Android system framework for mobile devices
developed to build the development of GIS
Engine Swift provides a comprehensive secondary development package for the
Eclipse development platform.
Supported operating systems:
Android 2.2 above system.
Supported map formats:
Vector layer: ESRI shape files (. Shp), AutoCAD DXF files (. Dxf),
open Waugh (. Ksp) file.
Raster layer: tif files (. Tif), img files (. Img), open Waugh (. Kvr)
file。
Supported features:
Browse: zoom in, zoom out, roaming, spatial data query (access to
information through the map coordinates),
fuzzy query
flashing graphic elements trajectory Layer
Edit: add / update / delete a point, line, surface graphics shp file,
Rendering: custom picture bullet style, custom linear and polygon
symbols,
Among the coordinate system and projection: coordinate system
conversion, set the projection.
Swift's advantage:
1. Swift supports common Android development tools Eclipse, simple to
use, easy maintenance.
2. Swift supports direct display and editing large shp map file.
3. Swift and higher price compared to similar products.
4.Swift operation of large-scale vector map fast.
Swift the system requirements:
Development Environment: Operating System: Windows 2000, Windows XP,
Windows 7
Development Tools: Eclipse
The terminal driven tools: pea pods
Operating environment:
Operating system Android phone and Tablet PC。
1.Summary
This article summarizes the conversion by map coordinates to screen coordinates。
2.Detail
By map coordinates to screen coordinates.
|
//Setting the value of a map
coordinate points
double dMapX = 123.4000;
double dMapY = 40.3200;
private MapControl
m_mapcontrol;
//Map coordinates point into
screen coordinates point
Point mapPoint =
m_mapcontrol.ToPixel(dMapX, dMapY)
//Display the results
Context context =
getApplicationContext();
CharSequence text = ("Screen
x:" + mapPoint.GetX() + "\r\n" + "Screen y:" +
mapPoint.GetY.ToString());
int duration =
Toast.LENGTH_SHORT;
Toast toast =
Toast.makeText(context, text, duration);
toast.show();
|
1.Summary
This article focuses on how to screen coordinates into map
coordinates
2.Detail
|
Get map coordinates from screen coordinates.
//Defining the screen coordinates of points
int iScreenX = 100;
int iScreenY = 200;
//Point to screen coordinates are converted to map coordinates
Point mapPoint = m_mapcontrol.FromPixel(iScreenX, iScreenY)
//Display the results
Context context = getApplicationContext();
CharSequence text = ("Screen x:" + mapPoint. GetX() + "\r\n" +
"Screen y:" +
mapPoint.GetY());
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
|
1.Case:
According to the screen coordinates to draw.
|
//Definition of a point graphic and style
Paint paint = new Paint();
paint.setColor(Color.RED);
//draw points
Canvas canvas;
canvas.drawPoint(100, 200, paint);
|
2.Remark:
Draw prerequisite: MapControl control must contain a layer.
General public void onClick (View v) {} event。
1.Case:
|
//Define some point in screen coordinates
Point[] arrPoint = new Point[5];
arrPoint[0].Set(40, 30);
arrPoint[1].Set(100, 30);
arrPoint[2].Set(120, 80);
arrPoint[3].Set(50, 70);
arrPoint[4].Set(40, 90);
//Custom style
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(7);
//Drawing lines
Canvas canvas;
canvas.drawLines(arrPoint, paint);
|
2.Remark:
Using the screen coordinates of the starting point
and end point coordinates draw
canvas.drawLine(startX, startY, stopX, stopY, paint)
1.Case:
|
//Custom style
p.setColor(Color.GRAY);
p.setStyle(Paint.Style.FILL);
//Rectangle border painting
//Polygon defined screen coordinates of points
Canvas canvas;
canvas.drawRect(60, 60, 80, 80, p);// Square
canvas.drawRect(60, 90, 160, 100, p);// Rectangle
|
1.Case:
|
//Custom style
p.setColor(Color.GRAY);
p.setStyle(Paint.Style.FILL);
//Set according to the parameters of the oval
RectF oval2 = new RectF();
oval2.set(210,100,250,130);
Canvas canvas;
canvas.drawOval(oval2, p);
|
|
private LocationManager locationManager;
private double longi;
private double latt;
//Get XML Map control ID
m_mapcontrol=(mapwork.swift.controls.mapControl)findViewById(R.id.mapControl1);
//Add to listen to events
m_mapcontrol.addDrawListener(mMapOnDraw);
//GPS
locationManager=(LocationManager)getSystemService(Context,LOCATION_SERVICE);
//Achieve listener LocationListener
LocationListener locationlisten=new LocationListener(){
public void onSatusChanged(String arg0,int arg1,Bundle arg2){
public void onProviderEnabled(String arg0){
public void onProviderDisabled(String arg0){
//This function is triggered when the coordinates change; Provider pass into the same
coordinates, it will not be triggered
public void onLocationChanged(Location arg0){
if(arg0!=null){
longi=arg0.getLongitude();
latt=arg0.getLatitude();
}
}
};
locationManager.requestLocationUpdates(LocationManager,GPS_OROVIDER
,1000,2,locationlisten);
|
1.Summary
Swift can be used in a variety of ways to control database object. Can set
QueryFilter, and SpatialFilter object query。
The ask a brief discussion of how to use the the Query Filters query object,
such as a table or feature。
• Query code.
|
FeatureDataSet fdataset = null;
// Obtained Layers
int lyrindex =
m_mapcontrol.GetMap().GetLayerIndex(m_dlg.GetTargetLayerName());
if (lyrindex >= 0) {
Layer lyr = m_mapcontrol.GetMap().GetLayer(lyrindex);
fdataset = (FeatureDataSet) lyr.GetDataSet();
} else {
return;
}
// Create query condition
QueryFilter qf = QueryFilter.CreateQueryFilter("NAME = '" +
"David'");
// Query results data
FeatureCursor fcur = fdataset.Search(qf, null);
fcur.MoveFirst();
Feature ft = fcur.MoveNext();
if (ft != null) {
m_fdsoog.SetGeometry(ft.GetGeometry());
String desc = ((DataString) ft.GetFieldValue(1)).GetValue();
|
|
private OnDrawListener mMapOnDraw=new OnDrawListener()
{
Public void onDraw(Canva canvas){
Paint paint=new Paint();
paint.setTextSize(12);
if(longi!=0.0&&latt!=0.0)
{
if(locationManager!=null&&locationManager.isProviderEnabled
(LocationManager.GPS_PROVIDER)==true)
{
android.graphics.Point pt=m_mapcontrol.ToPixel(longi,latt);
Bitmap bmp=BitmapFactory.decodeResource(getResources()
,R.drawable.ic_launcher);
canvas.drawBitmap(bmp,pt.x-bmp.getWidth()/2,pt.y-bmp.getHeight()/2,paint);
paint.setColor(Color,BLUE);
canvas.drawText("My Location",pt.x,pt.y,paint);
bmp.recycle();
}
}
}
};
|
This drawing method also applies to a small number of
geometry draw
1.Summary
This article will show you how to use Swift click query。
2.Detail
|
mapwork.swift.system.FeatureDataSet
public boolean onTouchEvent(MotionEvent arg0, MapControl arg1) {
mapwork.swift.system.DataSet dataset1 = null;
for(int i=0;i<arg1.GetMap().GetLayerCount();i++)
{
if(arg1.GetMap().GetLayer(i).GetType() ==
Layer.LayerType.LTFeature)
{
FeatureDataSet fds =
(FeatureDataSet)arg1.GetMap().GetLayer(i).GetDataSet();
}
}
mapwork.swift.system.FeatureDataSet featuredataset1 =
(mapwork.swift.system.
FeatureDataSet)
dataset1;
//Screen click point
float x = arg0.getX();
float y = arg0.getY();
//Converted to screen coordinates
double lgt = (x / arg1.getWidth()) *
(arg1.GetExtent().GetRight() - arg1.GetExtent().GetLeft())
+ arg1.GetExtent().GetLeft();
double ltt = arg1.GetExtent().GetTop() - ((y /
arg1.getHeight()) * (arg1.GetExtent().GetTop() -
arg1.GetExtent().GetBottom()));
mapwork.swift.geometry.Point p = new
mapwork.swift.geometry.Point();
p.Set(lgt,ltt);
//Look query results
double d1 = 0.001;
mapwork.swift.system.SpatialFilter sf = new
mapwork.swift.system.SpatialFilterNear(p,
d1);
mapwork.swift.system.FeatureCursor featurecursor1 =
featuredataset1.Search(null, sf);
_str1 = "";
if(featurecursor1!=null)
{
mapwork.swift.system.Feature feature =
featurecursor1.MoveNext();
while(feature != null)
{
//Display the query results conditions
DataString data1 =
(DataString)feature.GetFieldValue(featuredataset1.GetFieldIndex
("NAME"));
_str1 += data1.GetValue();
_str1 += "|";
//Go to the next data
feature = featurecursor1.MoveNext();
}
}
|
1.Summary
This article will show you how to gradually increased to the point layer file
(shape file).
2.Detail
|
//Edit Layer
public mapwork.swift.system.FeatureDataSetOOG m_fdsoog = null;
int lyrindex = m_mapcontrol.GetMap().GetLayerIndex(“Mylayer”);
if(lyrindex >= 0)
{
Layer lyr = m_mapcontrol.GetMap().GetLayer(lyrindex);
fdataset = (FeatureDataSet)lyr.GetDataSet();
}
else
{
return;
}
FeatureDataSource fdatasource =
(FeatureDataSource)fdataset.GetDataSource();
//Start editing
Boolean isEditting = fdatasource.IsStartEdit();
if(false == isEditting)
{
fdatasource.StartEdit();
}
fdatasource.StartEditOperation();
//Creating new elements
m_fdsoog = (mapwork.swift.system.FeatureDataSetOOG) fdataset;
Feature ft = fdataset.NewFeature();
//Change the attributes of a primitive
ft.SetFieldValue(1, “Names”);
ft.SetGeometry(m_fdsoog.GetGeometry());
//Save and stop editing
ft.Save();
fdatasource.StopEditOperation();
if(false == isEditting)
{
fdatasource.StopEdit(true);
}
|
|
//Add Reference
import mapwork.swift.system.Feature;
import mapwork.swift.system.FeatureDataSet;
import mapwork.swift.system.FeatureDataSetOOG;
import mapwork.swift.system.Layer;
FeatureDataSet fdataset = null;
int lyrindex = m_mapcontrol.GetMap().GetLayerIndex(“polygon”);
if(lyrindex >= 0)
{
Layer lyr = m_mapcontrol.GetMap().GetLayer(lyrindex);
fdataset = (FeatureDataSet)lyr.GetDataSet();
}
else
{
return;
}
QueryFilter qf = QueryFilter.CreateQueryFilter("");
FeatureCursor fcur = fdataset.Search(qf, null);
FeatureDataSource fdatasource
=(FeatureDataSource)fdataset.GetDataSource();
fdatasource.StartEdit();
fcur.MoveFirst();
Feature ft = fcur.MoveNext();
ft.Delete();
ft.Save();
fdatasource.StopEdit(true);
m_mapcontrol.RefreshMap();
|
Case:
1.Loaded directly
|
//Open shp file
mapwork.swift.system.Parameters parameters = mapwork.swift.system.
Parameters.
CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString
("SHAPE");
parameters.AddAttribute("DRIVER", data);
// set dir is the memory card
String dir ="/sdcard";
data = new mapwork.swift.system.data.DataString(dir);
parameters.AddAttribute("DIR", data);
//Set to open work space
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift.system.
DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
(parameters);
//Open Map Name
mapwork.swift.system.DataSet dataset =
datasource.OpenDataSet("Polygon.shp");
mapwork.swift.system.Layer layer1 = dataset.CreateLayer(null);
map = new mapwork.swift.system.Map();
map.AddLayer(layer1);
m_mapcontrol.SetMap(map);
|
2.Otherwise loaded
|
// Load "kvr"
mapwork.swift.system.Parameters parameters =
mapwork.swift.system.Parameters
. CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString(
"KVR");
parameters.AddAttribute("DRIVER", data);
data = new mapwork.swift.system.data.DataString(dir);
parameters.AddAttribute("DIR", data);
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift. system.
DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
(parameters);
dataset = datasource.OpenDataSet(filename);
// Load "tif"
mapwork.swift.system.Parameters parameters =
mapwork.swift.system.Parameters
.CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString(
"GDAL");
parameters.AddAttribute("DRIVER", data);
data = new mapwork.swift.system.data.DataString(dir);
parameters.AddAttribute("DIR", data);
data = new mapwork.swift.system.data.DataString("tif");
parameters.AddAttribute("EXT", data);
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift.system.
DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
(parameters);
dataset = datasource.OpenDataSet(filename);
// Load "img"
mapwork.swift.system.Parameters parameters =
mapwork.swift.system.Parameters
.CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString(
"GDAL");
parameters.AddAttribute("DRIVER", data);
data = new mapwork.swift.system.data.DataString(dir);
parameters.AddAttribute("DIR", data);
data = new mapwork.swift.system.data.DataString("img");
parameters.AddAttribute("EXT", data);
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift.system.
DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
(parameters);
dataset = datasource.OpenDataSet(filename);
// Load "gsf"
mapwork.swift.system.Parameters parameters =
mapwork.swift.system.Parameters
.CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString(
"KSP");
parameters.AddAttribute("DRIVER", data);
data = new mapwork.swift.system.data.DataString(dir);
parameters.AddAttribute("DIR", data);
data = new mapwork.swift.system.data.DataString("gsf");
parameters.AddAttribute("KSPEXT", data);
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift.
system.DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
(parameters);
dataset = datasource.OpenDataSet(filename);
// Load "dxf"
mapwork.swift.system.Parameters parameters =
mapwork.swift.system.Parameters
.CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString(
"DXF");
parameters.AddAttribute("DRIVER", data);
data = new mapwork.swift.system.data.DataString(dir);
parameters.AddAttribute("DIR", data);
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift.system.
DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
(parameters);
dataset = datasource.OpenDataSet(filename);
// Load cdi"
mapwork.swift.system.Parameters parameters =
mapwork.swift.system.Parameters
.CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString(
"CTF");
parameters.AddAttribute("DRIVER", data);
data = new mapwork.swift.system.data.DataString(dir);
parameters.AddAttribute("DIR", data);
data = new mapwork.swift.system.data.DataString("ARCGISSERVER");
parameters.AddAttribute("TYPE", data);
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift.
system.DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
parameters);
dataset = datasource.OpenDataSet(filename);
|
Case:
|
//set memory data set
mapwork.swift.system.Parameters parameters =
mapwork.swift.system.Parameters
.CreateParameters();
mapwork.swift.system.data.Data data = new
mapwork.swift.system.data.DataString
("MEMORY");
parameters.AddAttribute("DRIVER", data);
//create an in-memory data source
mapwork.swift.system.DataSourceFactory dsfactory = new
mapwork.swift.
system .DataSourceFactory();
mapwork.swift.system.DataSource datasource =
dsfactory.CreateDataSource
(parameters);
//Set memory data set structure
parameters = mapwork.swift.system.Parameters.CreateParameters();
parameters.AddAttribute("NAME", new DataString("mymem"));
parameters.AddAttribute("GEOMETRYTYPE", new
mapwork.swift.system.data.
DataString("POINT"));
parameters.AddAttribute("FIELDNAME1", new DataString("ID"));
parameters.AddAttribute("FIELDTYPE1", new DataString("INT"));
parameters.AddAttribute("FIELDNAME2", new DataString("longitude"));
parameters.AddAttribute("FIELDTYPE2", new DataString("DOUBLE"));
parameters.AddAttribute("FIELDNAME3", new DataString("latitude"));
parameters.AddAttribute("FIELDTYPE3", new DataString("DOUBLE"));
//Memory data sets created in memory data source
if( false == datasource.CreateDataSet(parameters) )
{return false};
//Open the data set
mapwork.swift.system.DataSet
dataset1=datasource.OpenDataSet("mymem");
//formation of layers
mapwork.swift.system.Layer layer1 = dataset1.CreateLayer(null);
|
Detail
|
//Set the layer rendering
mapwork.swift.system.FeatureRenderSimple render0 = new
mapwork.swift.
system.FeatureRenderSimple();
mapwork.swift.draw2d.Paint paint0 = render0.GetPaint();
mapwork.swift.draw2d.SolidBrush solidbrush0 =
(mapwork.swift.draw2d.SolidBrush)
paint0.GetBrush();
//Set the fill color of the surface graphics
solidbrush0.SetColor(Color.GREEN);
//Set graphical outline width of the line
paint0.GetPen().SetWidth(2);
//set graphics contouring color red
paint0.GetPen().SetColor(Color.RED);
((FeatureLayer)layer1).SetRender(render0);
|
Detail
|
//renderer
//Picture the way
mapwork.swift.system.FeatureRenderSimple renderSimple = new
mapwork. swift.
system.FeatureRenderSimple();
mapwork.swift.draw2d.PointSymbolBitmap symbmp = new mapwork.swift.
draw2d.PointSymbolBitmapFile("/mnt/sdcard/external_sd/point.png", Color.WHITE);
renderSimple.GetPaint().GetPointStyle().SetPointSymbol(0, symbmp);
((FeatureLayer)layer1).SetRender(renderSimple);
|
Detail
|
FeatureLayer flayer =
(FeatureLayer)m_mapcontrol.GetMap().GetLayer(m_selected
_layerset);
//Marked to obtain field
Spinner sp _label = (Spinner)m_layout.findViewById(R.id.setlabel);
String selected_label = (String)sp_label.getSelectedItem();
//Set the layer to display labels
flayer.SetLabelExpression(selected_label);
mapwork.swift.system.FeatureRenderSimple render1_simple = new
mapwork. swift
.system.FeatureRenderSimple();
//Changing the label size
render1_simple.GetPaint().GetFont().SetSize(20);
flayer.SetRender(render1_simple);
|
1.Summary
This article describes how
to refresh and make the graphics display area is invalid。
2.Detail
|
//Redraw the display area
mapControl1.MapRefresh();
|
; 1. Specify a point to be positioned
|
//Create a point
double dMapX = 123.4000;
double dMapY = 40.3200;
private MapControl m_mapcontrol;
//Map coordinates point into screen coordinates point
Point mapPoint = m_mapcontrol.ToPixel(dMapX, dMapY)
//Navigate to the point
m_mapcontrol.CenterAt(pt1);
m_mapcontrol.RefreshMap();
|
2. Specify a region to locate
|
//Defined area
Rectangle rect = new Rectangle();
rect.Set(123.4567, 41.3456, 123.4577, 14.3446);
//Set the map display area
m_mapcontrol.SetExtent(rect);
//Refresh Map
m_mapcontrol.RefreshMap();
|
Case:
|
//Longitude:
double dMapX = m_mapcontrol.GetCenter().GetX();
//Latitude:
double dMapY = m_mapcontrol.GetCenter().GetY();
|
Case:
|
//Scale
String myScale = "Scale of 1:" + m_mapcontrol.GetScale();
//Latitude:
double dMapY = m_mapcontrol.GetCenter().GetY();
|
Setting Click Tools
|
menuitem=submenu.add(groupId,menuid,menuItemOrder,"Get coordinate
point");
menuitem.setOnMenuitemClickListener(mGetCoorMenuItemClick);
menuid++;
|
|
private MenuItem.OnMenuItemClickListener mGetCoorMenuItemClick=new
MenuItem,
OnMenuItemClickListener(){
public boolean onMenuItemClick(MenuItem item)
{
curPoint=new GetCurPointTool(m_mapcontrol);
m_mapcontrol.SetCurTool(curPoint);
teturn true;
}
};
|
Display coordinates
|
if(curPoint!=null)
{
if(curPoint.GetPoint().Gex()!=0.00){
Toast.makeText(getApplicationContext(),"Longitude:"+String.valueOf(curPoint.GetPoint
().GetX())+"Latitude:"+String.valueOf(curPoint().GetY()),Toast.LENGTH_SHORT).show();
}
}
|
Class files used for GetCurPointTool
Set the trigger event:
|
menuitem=submenu.add(groupId,menuid,menuItemOrder,"Get information
near the
current point");
menuitem.setOnMenuitemClickListener(mGetCoorMenuItemClick);
menuid++;
//Get information near the current point
private MenuItem.OnMenuItemClickListener mGetInfoMenuItemClick=new
MenuItem.
OnMenuItemClickListener(){
public boolean onMenuItemClick(MenuItem item){
ToolGeneralQuery tmpTool=new
ToolGeneralQuery(SwiftexampleActivity, this
.m_mapcontrol);
m_mapcontrol.setCurTool(tmpTool);
return true;
}
};
|
Applied to the class
files:ToolGeneralQuery、GeneralInfoDialog;You can also modify ToolGeneralQuery,
Query a special layer。
Set the trigger event:
|
menuitem=submenu.add(groupId,menuid,menuItemOrder,"Attribute
query");
menuitem.setOnMenuitemClickListener(mGetCoorMenuItemClick);
menuid++;
//Attribute query----Just for the Name field in the current table
queries, developers can be
adjusted
private MenuItem.OnMenuItemClickListener
mQueryPropertyMenuItemClick=new
MenuItem.OnMenuItemClickListener(){
public boolean onMenuItemClick(MenuItem item)
{
final ToolQuery query=new
ToolQuery(m_mapcontrol.getContext().m_mapcontrol
.getContext());
aDialog.setTitle("Attribute query");
aDialog.setView(query);
aDialog.setNegativeButton("Close",new
DialogInterface.OnClickListener(){
public void onClick(DialogInface dialog,int which){
}
}};
AlertDialog ad=aDialog.create();
query.mTheDialog=ad;
ad.show();
return true;
}
};
|
Applied to the class files:ToolQuery
GPS Competence:
|
<uses -permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses -permission android:name="android.permission. ACCESS_LOCATION _EXTRA
_COMMANDS"/>
|
Case:
|
private OnClickListener mCorkyListenerPan = new OnClickListener()
{
public void onClick(View v)
{
mapwork.swift.tools.ITool tool = new
mapwork.swift.tools.MapPanTool();
m_mapcontrol.SetCurTool(tool);
}
};
|
Case:
|
private MenuItem.OnMenuItemClickListener mFullExtentMenuItemClick =
new MenuItem.
OnMenuItemClickListener()
{
public boolean onMenuItemClick(MenuItem item)
{
ICommand cmd = new FullViewCommand();
cmd.onCreate(m_mapcontrol);
cmd.excute();
return true;
}
};
|
Case:
|
private void menuItemZoomOut_Click(object
sender, EventArgs e)
{
ITool tool = new
HiMap.MapControls.Tools.ToolZoomOut();
tool.OnCreate(this.mapControl1);
this.mapControl1.CurTool = tool;
}
|
Case:
|
public class ZoomOut implements
OnClickListener {
public void onClick(View v) {
ICommand cmd = new ZoomOutCommand();
cmd.onCreate(m_mapcontrol);
cmd.excute();
}
}
|
Case:
|
SWIFT image file is loaded
Case :
//Loaded on the SD card mapsXML documents
m_mapcontrol.FromMWDOC("/sdcard/maps.xml");
Save SWIFT drawing
Case :
//Save the image file to the SD card map.xml
m_mapcontrol.ToMWDOC("/sdcard/maps.xml", true);
|
Case:
Converted to the WGS84 Xi'an 80
|
public mapwork.swift.geometry.Point
transfromToAppCoord(
mapwork.swift.geometry.Point pt84) {
mapwork.swift.geometry.Point ptearth = null;
double earthx = 0;
double earthy = 0;
// ------------7Parameter conversion----------
if (tmpTransForm7 != null && tmpCRS != null) {
mapwork.swift.coordinatesystem.GeographicCoordinateSystem gcs =
null;
if (tmpCRS.GetType() ==
mapwork.swift.coordinatesystem.CoordinateReferenceSystem.
CoordinateReferenceSystemType.CRSTGCS) {
gcs = (mapwork.swift.coordinatesystem.GeographicCoordinateSystem)
tmpCRS;
} else if (
tmpCRS.GetType() ==
mapwork.swift.coordinatesystem.CoordinateReferenceSystem.
CoordinateReferenceSystemType.CRSTPCS)
{
mapwork.swift.coordinatesystem.ProjectedCoordinateSystem pcs =
(mapwork. swift.
coordinatesystem.ProjectedCoordinateSystem) tmpCRS;
gcs = pcs.GetGeographicCoordinateSystem();
}
if (gcs.GetDatum().GetSpheroid().equals(getSpheroid84())) {
ptearth = new
mapwork.swift.geometry.Point(pt84.GetX(),pt84.GetY());
} else {
mapwork.swift.geometry.Point pt84RightAngle =
getSpheroid84().ToRightAngle(pt84);
mapwork.swift.geometry.Point ptAppRightAngle =
tmpTransForm7.TransForm
(pt84RightAngle);
ptearth = gcs.GetDatum().GetSpheroid().ToEarth(ptAppRightAngle);
}
} else {
ptearth = new mapwork.swift.geometry.Point(pt84.GetX(),
pt84.GetY());
}
earthx = ptearth.GetX();
earthy = ptearth.GetY();
mapwork.swift.geometry.Point ptApp = null;
// ---------------Projection conversion------------------
if (tmpCRS != null && tmpCRS.GetType() ==
mapwork.swift.coordinatesystem.
CoordinateReferenceSystem.CoordinateReferenceSystemType.CRSTPCS) {
mapwork.swift.coordinatesystem.ProjectedCoordinateSystem pcs =
(mapwork. swift.
coordinatesystem.ProjectedCoordinateSystem) tmpCRS;
if (pcs.GetProjectedType()==mapwork.swift.coordinatesystem.
ProjectedCoordinateSystem.ProjectedCoordinateSystemType.PCSTGUASS) {
mapwork.swift.coordinatesystem.GaussKruGerProjection gauss =
(mapwork. swift.
coordinatesystem.GaussKruGerProjection) pcs;
ptApp = gauss.ProjCal(ptearth, pcsGetGeographicCoordinateSystem().
GetAngularUnit(),
pcs.GetLinearUnit());
} else {
ptApp = new
mapwork.swift.geometry.Point(ptearth.GetX(),ptearth.GetY());
}
} else {
ptApp = new
mapwork.swift.geometry.Point(ptearth.GetX(),ptearth.GetY());
}
// ----------Correct----------------
if (tmpTransPoint != null) {
double x = ptApp.GetX();
double y = ptApp.GetY();
ptApp.Set(x + tmpTransPoint.GetX(), y + tmpTransPoint.GetY());
}
return ptApp;
|
WGS84 to the conversion of the 80-plane Cartesian coordinate
system in Xi'an
|
mapwork.swift.coordinatesystem.CoordinateTransForm7
tmpTransForm7
tmpTransForm7.TransForm(pt);
//Specific steps:
//Set a point
mapwork.swift.geometry.Point pt84;
pt84.Set(123.22, 41.2233);
mapwork.swift.geometry.Point pt84RightAngle =
getSpheroid84().ToRightAngle(pt84);
//Last 80 coordinate system
mapwork.swift.coordinatesystem.CoordinateTransForm7 tmpTransForm7
tmpTransForm7.TransForm(pt84RightAngle);
//Note: Set the parameter function
public Spheroid getSpheroid84() {
if (null == tmpSpheroid84)
tmpSpheroid84 = (Spheroid) Spheroid.FromWKT("SPHEROID[\"WGS84\",
6378137.0,
298.257223563]");
//.FromWKT("SPHEROID[\"Krasovsky_1940\",6378137.0,298.257223563]");
Or use the ellipsoid parameters
return tmpSpheroid84;
}
|
Case:
This is an operation layer and label an example, the following are a few main classes, and there are source code download.
1.Build a class called SwiftActivity as the main class
|
package mapwork.swift;
import java.io.File;
import java.util.ArrayList;
import mapwork.swift.buess.Setfont;
import mapwork.swift.buess.infopolygon;
import mapwork.swift.controls.LayerControl;
import mapwork.swift.controls.MapControl;
import mapwork.swift.system.FeatureLayer;
import mapwork.swift.tools.ITool;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class SwiftActivity extends Activity {
private Context tmpContext;
private static MapControl m_mapcontrol;
private LinearLayout mrelate;
private int btnWidth = 75;
private int btnHeight = 55;
private float fontsize = 13;
private static int s;
private LinearLayout laytoolOne;
private HorizontalScrollView menuOneHorview;
private Button btnProjectOpen = null;
private Button btnColor = null;
private Button btnfont=null;
LocationManager locationManager;
private double longi = 0.0;
private double latt = 0.0;
private TextView displayContent;
private TextView topinfo;
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mapwork.swift.system.Setting.InitActivity(this);
setContentView(R.layout.main);
tmpContext = this;
mapwork.swift.system.Setting.SetSnFilePath("/mnt/sdcard/mw_swfit.sn");
if (mapwork.swift.system.Setting.CheckSnActivation() == false) {
mapwork.swift.controls.RegisterDialog mdial = new mapwork.swift. controls.
RegisterDialog(tmpContext);
mdial.show();
}
locationManager = (LocationManager) getSystemService
(Context.LOCATION_SERVICE);
LocationListener locationlisten = new LocationListener() {
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
public void onProviderEnabled(String arg0) {
}
public void onProviderDisabled(String arg0) {
}
public void onLocationChanged(Location arg0) {
if (arg0 != null) {
longi = arg0.getLongitude();
latt = arg0.getLatitude();
}
}
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000, 2, locationlisten);
FindView();
SetListen();
InitFace();
}
private void FindView() {
m_mapcontrol = (mapwork.swift.controls.MapControl) findViewById(R.id.mapControl1);
topinfo = (TextView) findViewById(R.id.info);
BottomToolBarProject();
}
private void SetListen() {
btnProjectOpen.setOnClickListener(btnProjectOpenListener);
btnColor.setOnClickListener(btnColorOpenListener);
btnfont.setOnClickListener(btnFontListener);
}
private void InitFace() {
menuOneHorview.setVisibility(View.VISIBLE);
}
private void BottomToolBarProject() {
menuOneHorview = (HorizontalScrollView) findViewById(R.id.horizontalScrollView1);
menuOneHorview.setVisibility(View.INVISIBLE);
laytoolOne = (LinearLayout) findViewById(R.id.maintool1);
LayoutInflater factory = LayoutInflater.from(SwiftActivity.this);
btnProjectOpen = new Button(tmpContext);
btnProjectOpen = (Button) factory.inflate(R.layout.button, null);
btnProjectOpen.setTextSize(fontsize);
btnProjectOpen.setText(R.string.projectopen);
Drawable drawableTop = getResources().getDrawable(R.drawable.folder);
btnProjectOpen.setCompoundDrawablesWithIntrinsicBounds(null,
drawableTop, null, null);
laytoolOne.addView(btnProjectOpen);
btnColor = new Button(tmpContext);
btnColor = (Button) factory.inflate(R.layout.button, null);
btnColor.setTextSize(fontsize);
btnColor.setText(R.string.Color);
Drawable drawableTop1 = getResources().getDrawable(R.drawable.folder);
btnColor.setCompoundDrawablesWithIntrinsicBounds(null, drawableTop1,
null, null);
laytoolOne.addView(btnColor);
btnfont = new Button(tmpContext);
btnfont = (Button) factory.inflate(R.layout.button, null);
btnfont.setTextSize(fontsize);
btnfont.setText(R.string.Tran);
Drawable drawableTop2 = getResources().getDrawable(R.drawable.folder);
btnfont.setCompoundDrawablesWithIntrinsicBounds(null, drawableTop2,
null, null);
laytoolOne.addView(btnfont);
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
private android.view.View.OnClickListener btnColorOpenListener = new
Button.OnClickListener() {
public void onClick(View v) {
Intent inten = new Intent();
inten.setClass(SwiftActivity.this, infopolygon.class);
startActivity(inten);
}
};
private android.view.View.OnClickListener btnFontListener= new Button.OnClickListener
() {
public void onClick(View v) {
Intent inten = new Intent();
inten.setClass(SwiftActivity.this, Setfont.class);
startActivity(inten);
}
};
private android.view.View.OnClickListener btnProjectOpenListener = new
Button.OnClickListener() {
public void onClick(View v) {
ArrayList<String> files = new ArrayList<String>()
final String projectPath = "/sdcard/pro/";
File file = new File(projectPath);
if (!file.exists()) {
Toast.makeText(SwiftActivity.this, R.string.projectdirexist,
Toast.LENGTH_LONG).show();
return;
}
int fileSize = file.list().length;
for (int i = 0; i < fileSize; i++) {
File fileChild = new File(projectPath, file.list()[i]);
if (fileChild.isDirectory() && !fileChild.isHidden()) {
files.add(file.list()[i]);
}
}
final CharSequence[] cs = files.toArray(new CharSequence[files
.size()]);
AlertDialog.Builder aDialog = new AlertDialog.Builder(
m_mapcontrol.getContext());
aDialog.setTitle(R.string.projectlist);
aDialog.setItems(cs, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
m_mapcontrol.FromMWDOC(projectPath + cs[which].toString()
+ "/Map.xml");
m_mapcontrol.RefreshMap();
int pp = m_mapcontrol.GetMap().GetLayerCount(
ITool _pan = new mapwork.swift.tools.MapPanTool();
m_mapcontrol.SetCurTool(_pan)
}
});
AlertDialog ad = aDialog.create();
ad.show();
}
};
public static ArrayList init(ArrayList<String>name) {
// TODO Auto-generated method stub
name=new ArrayList<String>();
LayerControl lyrcontrol = new LayerControl(m_mapcontrol.getContext(),
m_mapcontrol.GetMap());
s = m_mapcontrol.GetMap().GetLayerCount();
for (int i = 0; i <s; i++) {
String layer = m_mapcontrol.GetMap().GetLayer(i).GetName();
name.add(layer);
}
return name;
}
public static int vulue(int s) {
// TODO Auto-generated method stub
s = m_mapcontrol.GetMap().GetLayerCount();
return s;
}
public static FeatureLayer vulu(mapwork.swift.system.FeatureLayer flayer) {
int m = 0;
int h= infopolygon.viu(m);
flayer = (mapwork.swift.system.FeatureLayer) m_mapcontrol
.GetMap().GetLayer(h);
return flayer;
}
public static FeatureLayer font(mapwork.swift.system.FeatureLayer flayer) {
int m = 0;
int h= Setfont.viu(m);
flayer = (mapwork.swift.system.FeatureLayer) m_mapcontrol
.GetMap().GetLayer(h);
return flayer;
}
}
|
2.The build name infopolygon class, layer styles,
|
package mapwork.swift.buess;
import java.util.ArrayList;
import mapwork.swift.ColorPickerDialog;
import mapwork.swift.R;
import mapwork.swift.SwiftActivity;
import mapwork.swift.controls.MapControl;
import mapwork.swift.geometry.GeometryDefine;
import mapwork.swift.system.FeatureLayer;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
public class infopolygon extends Activity {
private Spinner sp;
private Spinner sp2;
private ArrayList<String> name;
Context context;
private Button btnColorPicker;
private ColorPickerDialog dialog;
private String t;
private static MapControl m_mapcontrol;
private ArrayList<String> na;
private static int k;
private int cor;
private Button btnback;
private Button btnok;
private mapwork.swift.draw2d.SolidBrush solidbrush;
private mapwork.swift.draw2d.Pen solid;
private TextView text;
private TextView text1;
private TextView text2;
private mapwork.swift.system.FeatureLayer layer;
private GeometryDefine.KGeometryType mEditGeometryType = GeometryDefine.
KGeometryType.KGTUnknown;
public void onCreate(Bundle savedInstanceState) {
context = this;
super.onCreate(savedInstanceState);
setContentView(R.layout.entityinfo);
initViews();
Select();
}
private void Select() {
m_mapcontrol = (mapwork.swift.controls.MapControl) findViewById(R.id.mapControl1);
sp = (Spinner) findViewById(R.id.spinner1);
sp2 = (Spinner) findViewById(R.id.spinner2);
ArrayList<String> sel=new ArrayList<String>();
sel.add("Please select");
sel.add("Yes");
sel.add("No");
ArrayAdapter<String> adapter1 = new ArrayAdapter(this, android.R.layout.simple_
spinner_item, sel);
sp2.setAdapter(adapter1);
na = new ArrayList<String>();
na = SwiftActivity.init(name);
final ArrayAdapter<String>adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, na);
adapter.setDropDownViewResource(android.R.layout.s imple_ spinner_
dropdown_item);
sp.setAdapter(adapter);
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?>arg0, View arg1, int i,
long arg3) {
t = na.get(i).toString();
int s = 0;
int b = SwiftActivity.vulue(s);
for (int n = 0; n < b; n++) {
if (t == na.get(n)) {
k = n;
mapwork.swift.system.FeatureLayer flayer = null;
layer = SwiftActivity.vulu(flayer);
mapwork.swift.system.FeatureRenderSimple simplerender = (mapwork.swift.
system.FeatureRenderSimple) layer
.GetRender();
FeatureLayer feat = (FeatureLayer) layer;
mEditGeometryType = feat.GetGeometryType();
if (mEditGeometryType == GeometryDefine.KGeometryType.KGTPolyline) {
solid = (mapwork.swift.draw2d.Pen) simplerender
.GetPaint().GetPen();
}
solidbrush = (mapwork.swift.draw2d.SolidBrush) simplerender
.GetPaint().GetBrush();
}
}
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
sp2.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?>arg0, View arg1,
int i, long arg3) {
// TODO Auto-generated method stub
if(i==1){
layer.SetVisible(true);
}else{
layer.SetVisible(false);
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
private void initViews() {
btnback = (Button) findViewById(R.id.btn1);
btnok = (Button) findViewById(R.id.btn2);
text = (TextView) findViewById(R.id.editText1);
text1 = (TextView) findViewById(R.id.editText1);
text2 = (TextView) findViewById(R.id.editText2);
btnok.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String size = text.getText().toString();
String size1 = text1.getText().toString();
String size2 = text2.getText().toString();
int i = Integer.parseInt(size);
int j = Integer.parseInt(size1);
int l = Integer.parseInt(size2);
layer.SetVisibleScaleMax(j);
layer.SetVisibleScaleMin(l);
solidbrush.SetColor(Color.alpha(i));
infopolygon.this.finish();
}
});
btnback.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
infopolygon.this.finish();
}
});
btnColorPicker = (Button) findViewById(R.id.btn_color_picker);
btnColorPicker.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dialog = new ColorPickerDialog(context, getResources()
.getString(R.string.btn_color_picker),
new ColorPickerDialog.OnColorChangedListener() {
public void colorChanged(int color) {
cor = color;
solidbrush.SetColor(cor);
if (mEditGeometryType == GeometryDefine.KGeometryType.KGTPolyline) {
solid.SetColor(cor);
}
}
});
dialog.show();
}
});
}
public static int viu(int m) {
return m = k;
}
};
|
3.Build a named ColorPickerDialog the class, color picker
|
package mapwork.swift;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader;
import android.graphics.SweepGradient;
import android.os.Bundle
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
public class ColorPickerDialog extends Dialog {
private final boolean debug = true;
private final String TAG = "ColorPicker";
Context context;
private String title;
private int mInitialColor;
private OnColorChangedListener mListener;
public ColorPickerDialog(Context context, String title,
OnColorChangedListener listener) {
this(context, Color.BLACK, title, listener);
}
public ColorPickerDialog(Context context, int initialColor,
String title, OnColorChangedListener listener) {
super(context);
this.context = context;
mListener = listener;
mInitialColor = initialColor;
this.title = title;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WindowManager manager = getWindow().getWindowManager();
int height = (int) (manager.getDefaultDisplay().getHeight() * 0.5f);
int width = (int) (manager.getDefaultDisplay().getWidth() * 0.7f);
ColorPickerView myView = new ColorPickerView(context, height, width);
setContentView(myView);
setTitle(title);
}
private class ColorPickerView extends View {
private Paint mPaint;
private Paint mCenterPaint;
private Paint mLinePaint;
private Paint mRectPaint;
private Shader rectShader;
private float rectLeft;
private float rectTop;
private float rectRight;
private float rectBottom;
private final int[] mCircleColors;
private final int[] mRectColors;
private int mHeight;br />
private int mWidth;
private float r;
private float centerRadius;
private boolean downInCircle = true;
private boolean downInRect;
private boolean highlightCenter;
private boolean highlightCenterLittle;
public ColorPickerView(Context context, int height, int width) {
super(context);
this.mHeight = height - 36;
this.mWidth = width;
setMinimumHeight(height - 36);
setMinimumWidth(width);
mCircleColors = new int[] {0xFFFF0000, 0xFFFF00FF, 0xFF0000FF,
0xFF00FFFF, 0xFF00FF00,0xFFFFFF00, 0xFFFF0000};
Shader s = new SweepGradient(0, 0, mCircleColors, null);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setShader(s);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(50);
r = width / 2 * 0.7f - mPaint.getStrokeWidth() * 0.5f;
mCenterPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mCenterPaint.setColor(mInitialColor);
mCenterPaint.setStrokeWidth(5);
centerRadius = (r - mPaint.getStrokeWidth() / 2 ) * 0.7f;
mLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mLinePaint.setColor(Color.parseColor("#72A1D1"));
mLinePaint.setStrokeWidth(4);
mRectColors = new int[]{0xFF000000, mCenterPaint.getColor(), 0xFFFFFFFF};
mRectPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mRectPaint.setStrokeWidth(5);
rectLeft = -r - mPaint.getStrokeWidth() * 0.5f;
rectTop = r + mPaint.getStrokeWidth() * 0.5f +
mLinePaint.getStrokeMiter() * 0.5f + 15;
rectRight = r + mPaint.getStrokeWidth() * 0.5f;
rectBottom = rectTop + 50;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.translate(mWidth / 2, mHeight / 2 - 50);
canvas.drawCircle(0, 0, centerRadius, mCenterPaint);
if (highlightCenter || highlightCenterLittle) {
int c = mCenterPaint.getColor();
mCenterPaint.setStyle(Paint.Style.STROKE);
if(highlightCenter) {
mCenterPaint.setAlpha(0xFF);
}else if(highlightCenterLittle) {
mCenterPaint.setAlpha(0x90);
}
canvas.drawCircle(0, 0,
centerRadius + mCenterPaint.getStrokeWidth(), mCenterPaint);
mCenterPaint.setStyle(Paint.Style.FILL);
mCenterPaint.setColor(c);
}
canvas.drawOval(new RectF(-r, -r, r, r), mPaint);
if(downInCircle) {
mRectColors[1] = mCenterPaint.getColor();
}
rectShader = new LinearGradient(rectLeft, 0, rectRight, 0, mRectColors, null,
Shader.TileMode.MIRROR);
mRectPaint.setShader(rectShader);
canvas.drawRect(rectLeft, rectTop, rectRight, rectBottom, mRectPaint);
float offset = mLinePaint.getStrokeWidth() / 2;
canvas.drawLine(rectLeft - offset, rectTop - offset * 2,
rectLeft - offset, rectBottom + offset * 2, mLinePaint);//左
canvas.drawLine(rectLeft - offset * 2, rectTop - offset,
rectRight + offset * 2, rectTop - offset, mLinePaint);//上
canvas.drawLine(rectRight + offset, rectTop - offset * 2,
rectRight + offset, rectBottom + offset * 2, mLinePaint);//右
canvas.drawLine(rectLeft - offset * 2, rectBottom + offset,
rectRight + offset * 2, rectBottom + offset, mLinePaint);//下
super.onDraw(canvas);
}
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX() - mWidth / 2;
float y = event.getY() - mHeight / 2 + 50;
boolean inCircle = inColorCircle(x, y,
r + mPaint.getStrokeWidth() / 2, r - mPaint.getStrokeWidth() / 2);
boolean inCenter = inCenter(x, y, centerRadius);
boolean inRect = inRect(x, y);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downInCircle = inCircle;
downInRect = inRect;
highlightCenter = inCenter;
case MotionEvent.ACTION_MOVE:
if(downInCircle && inCircle) {
float angle = (float) Math.atan2(y, x);
float unit = (float) (angle / (2 * Math.PI));
if (unit < 0) {
unit += 1;
}
mCenterPaint.setColor(interpCircleColor(mCircleColors, unit));
if(debug) Log.v(TAG, "色环内, 坐标: " + x + "," + y);
}else if(downInRect && inRect) {
mCenterPaint.setColor(interpRectColor(mRectColors, x));
}
if(debug) Log.v(TAG, "[MOVE] 高亮: " + highlightCenter + "微亮: " + highlightCenterLittle +
" 中心: " + inCenter);
if((highlightCenter && inCenter) || (highlightCenterLittle && inCenter)) {//点击中心圆, 当前
highlightCenter = true;
highlightCenterLittle = false;
} else if(highlightCenter || highlightCenterLittle) {
highlightCenter = false;
highlightCenterLittle = true;
} else {
highlightCenter = false;
highlightCenterLittle = false;
}
invalidate();
break;
case MotionEvent.ACTION_UP:
if(highlightCenter && inCenter) {
if(mListener != null) {
mListener.colorChanged(mCenterPaint.getColor());
ColorPickerDialog.this.dismiss();
}
}
if(downInCircle) {
downInCircle = false;
}
if(downInRect) {
downInRect = false;
}
if(highlightCenter) {
highlightCenter = false;
}
if(highlightCenterLittle) {
highlightCenterLittle = false;
}
invalidate();
break;
}
return true;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(mWidth, mHeight);
}
private boolean inColorCircle(float x, float y, float outRadius, float inRadius) {
double outCircle = Math.PI * outRadius * outRadius;
double inCircle = Math.PI * inRadius * inRadius;
double fingerCircle = Math.PI * (x * x + y * y);
if(fingerCircle < outCircle && fingerCircle > inCircle) {
return true;
}else {
return false;
}
}
private boolean inCenter(float x, float y, float centerRadius) {
double centerCircle = Math.PI * centerRadius * centerRadius;
double fingerCircle = Math.PI * (x * x + y * y);
if(fingerCircle < centerCircle) {
return true;
}else {
return false;
}
}
private boolean inRect(float x, float y) {
if( x <= rectRight && x >=rectLeft && y <= rectBottom && y >=rectTop) {
return true;
} else {
return false;
}
}
private int interpCircleColor(int colors[], float unit) {
if (unit <= 0) {
return colors[0];
}
if (unit >= 1) {
return colors[colors.length - 1];
}
float p = unit * (colors.length - 1);
int i = (int)p;
p -= i;
int c0 = colors[i];
int c1 = colors[i+1];
int a = ave(Color.alpha(c0), Color.alpha(c1), p);
int r = ave(Color.red(c0), Color.red(c1), p);
int g = ave(Color.green(c0), Color.green(c1), p);
int b = ave(Color.blue(c0), Color.blue(c1), p);
return Color.argb(a, r, g, b);
}
private int interpRectColor(int colors[], float x) {
int a, r, g, b, c0, c1;
float p;
if (x < 0) {
c0 = colors[0];
c1 = colors[1];
p = (x + rectRight) / rectRight;
} else {
c0 = colors[1];
c1 = colors[2];
p = x / rectRight;
}
a = ave(Color.alpha(c0), Color.alpha(c1), p);
r = ave(Color.red(c0), Color.red(c1), p);
g = ave(Color.green(c0), Color.green(c1), p);
b = ave(Color.blue(c0), Color.blue(c1), p);
return Color.argb(a, r, g, b);
}
private int ave(int s, int d, float p) {
return s + Math.round(p * (d - s));
}
}
public interface OnColorChangedListener {
void colorChanged(int color);
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getmInitialColor() {
return mInitialColor;
}
public void setmInitialColor(int mInitialColor) {
this.mInitialColor = mInitialColor;
}
public OnColorChangedListener getmListener() {
return mListener;
}
public void setmListener(OnColorChangedListener mListener) {
this.mListener = mListener;
}
}
|
4.Build a class called setFont to set the font style
|
package mapwork.swift.buess;
import java.util.ArrayList;
import mapwork.swift.ColorPickerDialog;
import mapwork.swift.R;
import mapwork.swift.SwiftActivity;
import mapwork.swift.controls.MapControl;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
public class Setfont extends Activity{
private Spinner sp;
private ArrayList<String> name;
Context context;
private Button btnColorPicker;
private ColorPickerDialog dialog;
private String t;
private static MapControl m_mapcontrol;
private ArrayList<String>na;
private static int k;
private int cor;
private Button btnback;
private Button btnback;
private Button btnback;
private Button btnok;
private mapwork.swift.system.FeatureRenderSimple simplerender;
private TextView text;
public void onCreate(Bundle savedInstanceState) {
context = this;
super.onCreate(savedInstanceState);
setContentView(R.layout.font);
initViews();
Select();
}
private void Select() {
// TODO Auto-generated method stub
m_mapcontrol = (mapwork.swift.controls.MapControl) findViewById(R.id.mapControl1);
// findViewById(R.id.mapControl1);
sp = (Spinner) findViewById(R.id.spinner1);
na = new ArrayList<String>();
na = SwiftActivity.init(name);
final ArrayAdapter<String> adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, na);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_
dropdown_item);
sp.setAdapter(adapter);
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?>arg0, View arg1, int i,
long arg3) {
t = na.get(i).toString();
int s = 0;
int b = SwiftActivity.vulue(s);
for (int n = 0; n <b; n++) {
if (t == na.get(n)) {
k = n;
mapwork.swift.system.FeatureLayer flayer = null;
mapwork.swift.system.FeatureLayer layer=SwiftActivity.font(flayer);
simplerender = (mapwork.swift.system.FeatureRenderSimple) layer
.GetRender();
}
}
}
public void onNothingSelected(AdapterView<?>arg0) {
// TODO Auto-generated method stub
}
});
}
private void initViews() {
btnback=(Button)findViewById(R.id.btn1);
btnok=(Button)findViewById(R.id.btn2);
text=(TextView)findViewById(R.id.editText1);
btnok.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String size=text.getText().toString();
int i=Integer.parseInt(size);
simplerender.GetPaint().GetFont().SetSize(i);
Setfont.this.finish();
}
});
btnback.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Setfont.this.finish();
}
});
btnColorPicker = (Button) findViewById(R.id.btn_color_picker);
btnColorPicker.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dialog = new ColorPickerDialog(context,
getResources().getString(R.string.btn_color_picker),
new ColorPickerDialog.OnColorChangedListener() {
public void colorChanged(int color) {
cor=color;
simplerender.GetPaint().GetFont().SetColor(cor);
}
});
dialog.show();
}
});
}
public static int viu(int m) {
return m = k;
}
}
|
Download:
Source Download: Click to download
Video download: Click to download
|
|
|