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

First

Map data management

Map display

Map Property

Map Tools

Graphics-intensive

Coordinate system

Application examples

               
CopyRight © 2007-2018 Shenyang kwork software. Copyright
Tel:+8613332420811 Fax:+8613332420811
Mapwork -Geographic Information Systems