Android 从Spatialite中加载数据

  1. <span style="font-size:18px;">public class SpatialiteTestActivity extends Activity {  
  2.   
  3.     private MapView mapView;  
  4.     private GraphicsLayer graphicsLayer;  
  5.     private SimpleMarkerSymbol markerSymbol;  
  6.   
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.main);  
  11.         mapView = (MapView) this.findViewById(R.id.map);  
  12.         this.mapView.addLayer(new ArcGISTiledMapServiceLayer("http://www.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer"));  
  13.         graphicsLayer = new GraphicsLayer();  
  14.         this.mapView.addLayer(graphicsLayer);  
  15.   
  16.         // copy database to application folder  
  17.         try {  
  18.             AssetHelper.CopyAsset(this, ActivityHelper.getPath(thisfalse), getString(R.string.test_db));  
  19.         } catch (IOException e) {  
  20.             ActivityHelper.showAlert(this, getString(R.string.error_copy_failed));  
  21.         }  
  22.   
  23.         // symbol  
  24.         markerSymbol = new SimpleMarkerSymbol(Color.RED, 16, SimpleMarkerSymbol.STYLE.CIRCLE);  
  25.         markerSymbol.setOutline(new SimpleLineSymbol(Color.BLACK, 1));  
  26.   
  27.         //  
  28.         loadDataFromSpatialite();  
  29.     }  
  30.   
  31.     private void loadDataFromSpatialite() {  
  32.         try {  
  33.             String dbFile = ActivityHelper.getDataBase(this,  
  34.                     getString(R.string.test_db));  
  35.             Class.forName("jsqlite.JDBCDriver").newInstance();  
  36.             jsqlite.Database db = new jsqlite.Database();  
  37.             db.open(dbFile, jsqlite.Constants.SQLITE_OPEN_READONLY);  
  38.   
  39.             Callback cb = new Callback() {  
  40.                 @Override  
  41.                 public void columns(String[] coldata) {  
  42.                 }  
  43.   
  44.                 @Override  
  45.                 public void types(String[] types) {  
  46.                 }  
  47.   
  48.                 @Override  
  49.                 public boolean newrow(String[] rowdata) {  
  50.                     // 爸从spatialite中得到的空间数据在GrpahicsLayer中显示出来  
  51.                     double x = Double.valueOf(rowdata[2]);  
  52.                     double y = Double.valueOf(rowdata[3]);  
  53.                     Point pnt = new Point(x, y);  
  54.                     Graphic graphic = new Graphic(pnt, markerSymbol);  
  55.                     graphicsLayer.addGraphic(graphic);  
  56.                     return false;  
  57.                 }  
  58.             };  
  59.   
  60.             // sql语句,取出x、y坐标  
  61.             String query = "SELECT name, peoples, x(Geometry), y(Geometry) from Towns where peoples > 8000";  
  62.             db.exec(query, cb);  
  63.   
  64.         } catch (IllegalAccessException e) {  
  65.             e.printStackTrace();  
  66.         } catch (InstantiationException e) {  
  67.             e.printStackTrace();  
  68.         } catch (ClassNotFoundException e) {  
  69.             e.printStackTrace();  
  70.         } catch (FileNotFoundException e) {  
  71.             e.printStackTrace();  
  72.         } catch (Exception e) {  
  73.             e.printStackTrace();  
  74.         }  
  75.     }  
  76.   
  77.     @Override  
  78.     protected void onDestroy() {  
  79.         super.onDestroy();  
  80.     }  
  81.   
  82.     @Override  
  83.     protected void onPause() {  
  84.         super.onPause();  
  85.         mapView.pause();  
  86.     }  
  87.   
  88.     @Override  
  89.     protected void onResume() {  
  90.         super.onResume();  
  91.         mapView.unpause();  
  92.     }  
  93.   
  94. }</span>  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值