关于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;
}
|
|
|
|