如何在Android中使用GeoTools显示地图?

时间:2012-06-22 12:09:59

标签: android geotools

我在Windows XP上使用Eclipse。我下载了GeoTools 2.7.4-bin.zip文件并开始在我的项目中添加一些.jar文件。 我的项目的特殊性在于它是一个Android。

我正在开发一个Android应用程序,允许我在地图上显示(谷歌地图)一些功能(点但不仅仅是)所以我试图使用GeoTools来做到这一点。但Android不支持Swings。 我的代码是

/*code i m using */

package info.ipower.geotools;

import java.io.File;

import org.geotools.data.FileDataStore;

import org.geotools.data.FileDataStoreFinder;

import org.geotools.data.simple.SimpleFeatureSource;

import org.geotools.map.FeatureLayer;

import org.geotools.map.Layer;

import org.geotools.map.MapContent;

import org.geotools.styling.SLD;

import org.geotools.styling.Style;

import org.geotools.swing.JMapFrame;

import org.geotools.swing.data.JFileDataStoreChooser;


/**
 * Prompts the user for a shapefile and displays the contents on the screen in a map frame.
 * <p>
 * This is the GeoTools MapApplication application used in documentationa and tutorials. *
 */

public class GeoMap{

    /**
     * GeoTools MapApplication demo application. Prompts the user for a shapefile and displays its
     * contents on the screen in a map frame
     */
    public static void main(String[] args) throws Exception {
        // display a data store file chooser dialog for shapefiles
        File file = JFileDataStoreChooser.showOpenFile("shp", null);
        if (file == null) {
            return;
        }

        FileDataStore store = FileDataStoreFinder.getDataStore(file);
        SimpleFeatureSource featureSource = store.getFeatureSource();

        // Create a map content and add our shapefile to it
        MapContent map = new MapContent();
        map.setTitle("MapApplication");

        Style style = SLD.createSimpleStyle(featureSource.getSchema());
        Layer layer = new FeatureLayer(featureSource, style);
        map.addLayer(layer);

        // Now display the map
        JMapFrame.showMap(map);
    }

}

但是它在eclipse中给了我以下错误

- 来自JFileDataStoreChooser类型的方法showOpenFile(String,Component)引用    到缺少的类型组件

  • 无法解析java.awt.Component类型。它是间接引用的 必需的.class文件
  • 无法解析java.awt.HeadlessException类型。这是间接的 从所需的.class文件引用
  • 无法解析javax.swing.JFileChooser类型。这是间接的 从所需的.class文件引用
  • JMapFrame类型中的方法showMap(MapContext)不是 适用于参数(MapContent)
  • 无法解析javax.swing.JFrame类型。这是间接的 从必需的.class文件中引用 请任何人帮我解决这些错误

1 个答案:

答案 0 :(得分:3)

不幸的是,Swing没有在Android上实现,所以你运气不好。事实上,甲骨文和谷歌刚刚进行了一场大规模的法律斗争,部分原因在于此。我非常确定将任何严肃的Swing应用程序或库移植到Android是一项重大工作:几乎是从头开始重写。