关于Swift




         Swift的含义:



         Swift是"Swift团队"为Android系统移动设备框架开发打造的开发GIS引擎

         Swift为Eclipse开发平台提供了完善的二次开发包。

        支持的操作系统:


         Android 2.2 以上的系统

        支持的地图格式:



        矢量图层:ESRI shape 文件 (.shp), AutoCAD DXF 文件 (.dxf),开沃(.ksp)文件。

        栅格图层: tif 文件 (.tif), img 文件(.img) ,开沃的(.kvr)文件。

        支持的功能:



        浏览: 放大, 缩小, 漫游, 空间数据查询(通过地图坐标获取信息), 模糊查询, 闪烁图形元素, 轨迹图层,

        编辑: 添加/更新/删除shp文件中的点, 线, 面图形,

        渲染: 自定义图片符号样式, 自定义线形和多边形符号,

        坐标系和投影: 坐标系间互相转换, 设置投影.

        Swift的优势:



        1. Swift支持常用Android开发工具Eclipse,使用简单,维护轻松.

        2. Swift支持直接显示和编辑大型shp地图文件.

        3. Swift与同类产品相比有更高的性价比.

        4. Swift操作大型矢量地图速度飞快.

        Swift的系统要求:



        开发环境: 操作系统: Windows 2000, Windows XP, Windows 7

        开发工具: Eclipse

        终端驱动工具: 豌豆荚

        运行环境:



        操作系统为 Android系统的手机和平板电脑。



     1.摘要



               这篇文章总结了如何由地图坐标转换到屏幕坐标。



     2.详情



               由地图坐标得到屏幕坐标.



   //设置一个地图坐标点的值

   double dMapX = 123.4000;

   double dMapY = 40.3200;

   private MapControl m_mapcontrol;

   //将地图坐标点转换成屏幕坐标点

   Point mapPoint = m_mapcontrol.ToPixel(dMapX, dMapY)

   //显示结果

   Context context = getApplicationContext();

   CharSequence text = ("屏幕 x:" + mapPoint.GetX() + "\r\n" + "屏幕 y:" +

        mapPoint.GetY.ToString());

   int duration = Toast.LENGTH_SHORT;

   Toast toast = Toast.makeText(context, text, duration);

    toast.show();



     1.摘要



               本文主要讲述如何将屏幕坐标转换成地图坐标

     2.详情





     由屏幕坐标得到地图坐标.

     //定义屏幕坐标点

     int iScreenX = 100;

     int iScreenY = 200;

     //将屏幕坐标点转换为地图坐标

     Point mapPoint = m_mapcontrol.FromPixel(iScreenX, iScreenY)

     //显示结果

     Context context = getApplicationContext();

     CharSequence text = ("屏幕 x:" + mapPoint. GetX() + "\r\n" + "屏幕 y:" + mapPoint.GetY());

     int duration = Toast.LENGTH_SHORT;

     Toast toast = Toast.makeText(context, text, duration);

     toast.show();



     1.示例:



                根据屏幕坐标绘制.




    //定义一个点图形和样式

    Paint paint = new Paint();

    paint.setColor(Color.RED);

    //绘点

    Canvas canvas;

    canvas.drawPoint(100, 200, paint);



     2.备注:



               绘制的前提条件:MapControl控件必须包含图层。一般在public void onClick(View v){}事件中执行。


     1.示例:





      //定义一些以屏幕坐标为单位的点

      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);

      //定义样式

      Paint paint = new Paint();

      paint.setColor(Color.RED);

      paint.setStrokeWidth(7);

      //绘制线段

      Canvas canvas;

      canvas.drawLines(arrPoint, paint);



      2.备注:



                   使用屏幕坐标的起点、终点坐标绘制

                   canvas.drawLine(startX, startY, stopX, stopY, paint)


     1.示例:





      //定义样式

     p.setColor(Color.GRAY);

     p.setStyle(Paint.Style.FILL);

     //根据边框画设置矩形

     //为多边形定义一些屏幕坐标点

     Canvas canvas;

     canvas.drawRect(60, 60, 80, 80, p);// 正方形

     canvas.drawRect(60, 90, 160, 100, p);// 长方形



     1.示例:





      //定义样式

     p.setColor(Color.GRAY);

     p.setStyle(Paint.Style.FILL);

     //根据椭圆的参数设置

     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;

     //获取XML中地图控件ID

     m_mapcontrol=(mapwork.swift.controls.mapControl)findViewById(R.id.mapControl1);

     //加入监听事件

     m_mapcontrol.addDrawListener(mMapOnDraw);

     //GPS

     locationManager=(LocationManager)getSystemService(Context,LOCATION_SERVICE);

     //实现监听器 LocationListener

     LocationListener locationlisten=new LocationListener(){

     public void onSatusChanged(String arg0,int arg1,Bundle arg2){

     public void onProviderEnabled(String arg0){

     public void onProviderDisabled(String arg0){

     //当坐标改变时触发此函数;如果Provider传进相同的坐标,它就不会被触发

     public void onLocationChanged(Location arg0){

     if(arg0!=null){

     longi=arg0.getLongitude();

     latt=arg0.getLatitude();

     }

     }

     };

     locationManager.requestLocationUpdates(LocationManager,GPS_OROVIDER

       ,1000,2,locationlisten);



     1.摘要



            Swift可以使用多种方式查询控件数据库中的对象。使用QueryFilter和SpatialFilter对象可以设置查询条件。

             本问简短的讨论了如何使用QueryFilters查询对象,例如table或feature。

                  • 查询的代码.





     FeatureDataSet fdataset = null;

     // 获得图层

     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;

     }

     // 建立查询条件

     QueryFilter qf = QueryFilter.CreateQueryFilter("NAME = '" + "David'");

     // 得到查询结果数据

     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("我的位置",pt.x,pt.y,paint);

    bmp.recycle();

    }

    }

    }

    };


                   当前这种绘制方法也适用于少量几何图形的绘制


     1.摘要


 

                 本文将展示如何使用Swift进行点选查询。


     2.详情





     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;

    //获得屏幕点击点

    float x = arg0.getX();

    float y = arg0.getY();

    //转换为屏幕坐标

    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);

    //查找范围获得查询结果

    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)

    {

    //显示查询结果条件

    DataString data1 = (DataString)feature.GetFieldValue(featuredataset1.GetFieldIndex

    ("NAME"));

    _str1 += data1.GetValue();

    _str1 += "|";

    //转到下一条数据

    feature = featurecursor1.MoveNext();

    }

    }



     1.摘要



                本文将逐步的展示如何向点图层文件(shape file)增加点.



     2.详情

             



     //获得编辑图层

     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();

     //开始编辑

     Boolean isEditting = fdatasource.IsStartEdit();

     if(false == isEditting)

     {

     fdatasource.StartEdit();

     }

     fdatasource.StartEditOperation();

     //创建新要素

     m_fdsoog = (mapwork.swift.system.FeatureDataSetOOG) fdataset;

     Feature ft = fdataset.NewFeature();

     //更改图元的属性

     ft.SetFieldValue(1, “Names”);

     ft.SetGeometry(m_fdsoog.GetGeometry());

     //保存并停止编辑

     ft.Save();

     fdatasource.StopEditOperation();

     if(false == isEditting)

     {

     fdatasource.StopEdit(true);

     }





     //添加引用

     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();



             示例:


              1.直接加载



       //打开shp文件

      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);

      //设置dir为存储卡

      String dir ="/sdcard";

      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);

      //打开地图名称

      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.其它方式加载

 



      // 加载"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);

      // 加载"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);

      // 加载"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);

      // 加载"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);

      // 加载"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);

      // 加载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);



      示例:




      //设置内存数据集

      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);

      //创建一个 内存数据源

      mapwork.swift.system.DataSourceFactory dsfactory = new mapwork.swift.

        system .DataSourceFactory();

      mapwork.swift.system.DataSource datasource = dsfactory.CreateDataSource

        (parameters);

      //设置内存数据集结构

      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"));

      //在内存数据源创建内存数据集

      if( false == datasource.CreateDataSet(parameters) )

      {return false};

      //打开数据集

      mapwork.swift.system.DataSet dataset1=datasource.OpenDataSet("mymem");

      //形成图层

      mapwork.swift.system.Layer layer1 = dataset1.CreateLayer(null);



     详情




      //设置图层渲染

      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();

      //设置面图形的填充颜色

      solidbrush0.SetColor(Color.GREEN);

      //设置图形外廓线的宽度

      paint0.GetPen().SetWidth(2);

      //设置图形外廓线的颜色为红色

      paint0.GetPen().SetColor(Color.RED);

      ((FeatureLayer)layer1).SetRender(render0);



     详情




     //渲染

     //图片方式

     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);



     详情





      FeatureLayer flayer = (FeatureLayer)m_mapcontrol.GetMap().GetLayer(m_selected

        _layerset);

     //标注获得字段

     Spinner sp _label = (Spinner)m_layout.findViewById(R.id.setlabel);

     String selected_label = (String)sp_label.getSelectedItem();

     //设置图层显示标注

     flayer.SetLabelExpression(selected_label);

     mapwork.swift.system.FeatureRenderSimple render1_simple = new mapwork. swift

       .system.FeatureRenderSimple();

     //更改标注大小

     render1_simple.GetPaint().GetFont().SetSize(20);

     flayer.SetRender(render1_simple);



     1.摘要


                本文将讲述如何刷新及使绘图显示区域无效。

     2.详情




     //重绘显示区域

     mapControl1.MapRefresh();



;           1. 指定一个点进行定位



      //创建一个点

     double dMapX = 123.4000;

     double dMapY = 40.3200;

     private MapControl m_mapcontrol;

     //将地图坐标点转换成屏幕坐标点

     Point mapPoint = m_mapcontrol.ToPixel(dMapX, dMapY)

     //定位到该点

     m_mapcontrol.CenterAt(pt1);

     m_mapcontrol.RefreshMap();



                 2. 指定一个区域进行定位



      //定义区域

     Rectangle rect = new Rectangle();

     rect.Set(123.4567, 41.3456, 123.4577, 14.3446);

     //设置地图显示区域

     m_mapcontrol.SetExtent(rect);

     //刷新地图

     m_mapcontrol.RefreshMap();





      示例:





      //经度:

      double dMapX = m_mapcontrol.GetCenter().GetX();

      //纬度:

      double dMapY = m_mapcontrol.GetCenter().GetY();



      示例:





      //比例尺

     String myScale = "比例尺为 1:" + m_mapcontrol.GetScale();

     //纬度:

     double dMapY = m_mapcontrol.GetCenter().GetY();





                    设置点击工具



     menuitem=submenu.add(groupId,menuid,menuItemOrder,"获取坐标点");

     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;

     }

     };


                    显示坐标



     if(curPoint!=null)

     {

     if(curPoint.GetPoint().Gex()!=0.00){

     Toast.makeText(getApplicationContext(),"经度:"+String.valueOf(curPoint.GetPoint().GetX()

         )+"纬度:"+String.valueOf(curPoint().GetY()),Toast.LENGTH_SHORT).show();

     }

     }


                   用到的类文件为GetCurPointTool

                   设置触发事件:


     menuitem=submenu.add(groupId,menuid,menuItemOrder,"获取当前点附近的信息");

     menuitem.setOnMenuitemClickListener(mGetCoorMenuItemClick);

     menuid++;

     //获取当前点附近的信息

     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;

}

};


                  应用到的类文件:ToolGeneralQuery、GeneralInfoDialog;也可以修改ToolGeneralQuery,查询特殊的图层。

                 设置触发事件:


     menuitem=submenu.add(groupId,menuid,menuItemOrder,"属性查询");

     menuitem.setOnMenuitemClickListener(mGetCoorMenuItemClick);

     menuid++;

     //属性查询----只是针对当前表中有Name字段的查询,开发人员可以进行调整

     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("属性查询");

     aDialog.setView(query);

     aDialog.setNegativeButton("关闭",new DialogInterface.OnClickListener(){

     public void onClick(DialogInface dialog,int which){

     }

     }};

     AlertDialog ad=aDialog.create();

     query.mTheDialog=ad;

     ad.show();

     return true;

     }

     };


                  应用到的类文件:ToolQuery

                  GPS权限:



    <uses -permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <uses -permission android:name="android.permission. ACCESS_LOCATION _EXTRA

        _COMMANDS"/>



     示例:





     private OnClickListener mCorkyListenerPan = new OnClickListener()

     {

     public void onClick(View v)

     {

     mapwork.swift.tools.ITool tool = new mapwork.swift.tools.MapPanTool();

     m_mapcontrol.SetCurTool(tool);

     }

     };



     示例:





     private MenuItem.OnMenuItemClickListener mFullExtentMenuItemClick = new MenuItem.

        OnMenuItemClickListener()

     {

     public boolean onMenuItemClick(MenuItem item)

     {

     ICommand cmd = new FullViewCommand();

     cmd.onCreate(m_mapcontrol);

     cmd.excute();

     return true;

     }

     };



     示例:





        private void menuItemZoomOut_Click(object sender, EventArgs e)

         {

         ITool tool = new HiMap.MapControls.Tools.ToolZoomOut();

         tool.OnCreate(this.mapControl1);

         this.mapControl1.CurTool = tool;

         }



     示例:





         public class ZoomOut implements OnClickListener {

         public void onClick(View v) {

         ICommand cmd = new ZoomOutCommand();

         cmd.onCreate(m_mapcontrol);

         cmd.excute();

         }

         }



     示例:





     加载SWIFT图档

     示例 :

     //加载SD卡上的mapsXML文档

     m_mapcontrol.FromMWDOC("/sdcard/maps.xml");

     保存SWIFT图档

     示例 :

     //保存图档到SD卡map.xml

     m_mapcontrol.ToMWDOC("/sdcard/maps.xml", true);



     示例:



                 将WGS84 转换 为西安80



       public mapwork.swift.geometry.Point transfromToAppCoord(

      mapwork.swift.geometry.Point pt84) {

      mapwork.swift.geometry.Point ptearth = null;

      double earthx = 0;

      double earthy = 0;

      // ------------7参数转换----------

      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;

      // ---------------投影转换------------------

      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());

      }

      // ----------纠偏----------------

      if (tmpTransPoint != null) {

      double x = ptApp.GetX();

      double y = ptApp.GetY();

      ptApp.Set(x + tmpTransPoint.GetX(), y + tmpTransPoint.GetY());

      }

      return ptApp;



                WGS84到西安80平面直角坐标系的转换



       mapwork.swift.coordinatesystem.CoordinateTransForm7 tmpTransForm7

      tmpTransForm7.TransForm(pt);

      //具体步骤为:

      //设置一个点

      mapwork.swift.geometry.Point pt84;

      pt84.Set(123.22, 41.2233);

      mapwork.swift.geometry.Point pt84RightAngle = getSpheroid84().ToRightAngle(pt84);

      //最后转换为80坐标系

      mapwork.swift.coordinatesystem.CoordinateTransForm7 tmpTransForm7

      tmpTransForm7.TransForm(pt84RightAngle);

      //注:设置参数函数为

      public Spheroid getSpheroid84() {

      if (null == tmpSpheroid84)

      tmpSpheroid84 = (Spheroid) Spheroid.FromWKT("SPHEROID[\"WGS84\", 6378137.0,

      298.257223563]");

      //.FromWKT("SPHEROID[\"Krasovsky_1940\",6378137.0,298.257223563]");

      或使用椭球体参数

      return tmpSpheroid84;

      }

开始

地图数据管理

地图显示

地图属性

地图工具

图档文件

坐标系统

               
Copyright © 2007-2018 沈阳开沃软件有限公司 版权所有
手机:+8613332420811 电话:+862423491067
Mapwork -地理信息系统