【问题标题】:How to display a map using shape files in Android?如何在 Android 中使用形状文件显示地图?
【发布时间】:2016-11-29 10:10:21
【问题描述】:

我已尝试使用以下代码从我的 SD 卡读取和显示 shapefile

    ShapefileFeatureTable shapefileFeatureTable = null;
    try {
        shapefileFeatureTable = new ShapefileFeatureTable(Environment.getExternalStorageDirectory().getAbsolutePath()+"/India_SHP/INDIA.shp");
        featureLayer = new FeatureLayer(shapefileFeatureTable);
        featureLayer.setRenderer(new SimpleRenderer(new SimpleMarkerSymbol(
                getResources().getColor(android.R.color.holo_blue_bright),
                28, SimpleMarkerSymbol.STYLE.CIRCLE)));

        mMapView.addLayer(featureLayer);

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

这是我的应用程序 build.gradle 文件详细信息

 dependencies {
repositories {
    jcenter()
    // Add the Esri public Bintray Maven repository
    maven {
        url 'https://esri.bintray.com/arcgis'
    }
}
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.0.1'
testCompile 'junit:junit:4.12'

compile 'com.esri.arcgis.android:arcgis-android:10.2.5'

}

最后我得到了空白的黑屏

有人可以帮我解决这个问题吗?我正在尝试过去三天的这个例子

【问题讨论】:

标签: android google-maps shapefile


【解决方案1】:

我终于找到了使用 Openmap 库的答案

这是关于在 Android 中使用 Openmap.jar 读取和显示形状文件的步骤和示例屏幕。

1) 下载示例形状文件 zip(我使用过印度形状文件)

2) 解压 zip 文件并选择一个以 .shp 结尾的文件

3) 将该 .shp 文件添加到设备存储中并获取该文件位置

4) 将该文件位置分配给 OpenMap 库的“ShapeFile”类(第一级)

5)“ShapeFile”类转换此数据并存储为“ESRIRecord”类(二级)

6) 最后使用“ESRIRecord”我们得到 PolygonOptions x 和 y 点,它们分配给谷歌地图上的显示形状(第三级)

关于步骤: #1,#2 和 #3 步骤会随着不同类型的文件读取而变化。 例如:从我们的应用程序中,我们可以从服务器下载所需的 zip 文件并解压缩并将该文件存储在设备位置(或) 我们可以将所需的 zip 文件存储在项目级别,然后解压缩并将该文件存储在设备位置等。

      File file = new File(getfile("INDIA.shp"));

        if (file.exists()) {
            Toast.makeText(getApplicationContext(), "File exists",
                    Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "File not exists @@@@@",
                    Toast.LENGTH_LONG).show();
            return;
        }

  ShapeFile shapeFile = new ShapeFile(targetFilePath);      

      for (ESRIRecord esriRecord = shapeFile.getNextRecord(); esriRecord!=null;esriRecord = shapeFile.getNextRecord()){
            String shapeTypeStr = ShapeUtils.getStringForType(esriRecord.getShapeType());
            Log.v("myapp","shape type = " + esriRecord.getRecordNumber() + "-" + shapeTypeStr);               

            if (shapeTypeStr.equals("POLYGON")) {
                // cast type after checking the type
                ESRIPolygonRecord polyRec = (ESRIPolygonRecord)esriRecord;

                Log.v("myapp","number of polygon objects = " + polyRec.polygons.length);
                for (int i=0; i<polyRec.polygons.length; i++){
                    // read for a few layers
                    ESRIPoly.ESRIFloatPoly poly = (ESRIPoly.ESRIFloatPoly)polyRec.polygons[i];

                    PolygonOptions polygonOptions = new PolygonOptions();
                    polygonOptions.strokeColor(Color.argb(150,200,0,0));
                    polygonOptions.fillColor(Color.argb(150,0,0,150));
                    polygonOptions.strokeWidth(2.0f);

                    Log.v("myapp","Points in the polygon = " + poly.nPoints);

                    for (int j=0; j<poly.nPoints; j++){
                        //Log.v("myapp",poly.getY(j) + "," + poly.getX(j));
                        polygonOptions.add(new LatLng(poly.getY(j), poly.getX(j)));
                    }
                    map.addPolygon(polygonOptions);
                    Log.v("myapp","polygon added");
                }

            }
            else {
                Log.v("myapp","error polygon not found (type = " + esriRecord.getShapeType() + ")");
            }

        }

    } catch (Exception e) {
        e.printStackTrace();
        Log.v("myapp","error=" + e);
    }

【讨论】:

  • 嘿,你能告诉我你如何在你的项目中集成 openmap.jar 或任何链接吗?
【解决方案2】:
猜你喜欢
  • 2019-03-06
  • 2016-05-16
  • 1970-01-01
  • 2014-09-15
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多