2016-11-29 1 views
-3

Я попытался с ниже код для чтения и отображения шейп с моей SD картыКак отобразить карту, используя файлы формы в Android?

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' 

}

И, наконец, я я получаю пустой черный экран

Может ли кто-нибудь помочь мне в этом отношении? Я пытаюсь этот пример из последних трех дней

+0

попробуйте посмотреть на это: http://gis.stackexchange.com/questions/48191/how-to-display-esri-shapefile-in-android –

ответ

0

Наконец я найти ответ, используя библиотеку OpenMap

Вот шаги и примеры экранов относительно файла формы для чтения и отображения с помощью Openmap.jar в Android.

1) Загрузить файл форма образца почтовый индекс (я использовал файл форма Индия)

2) Распакуйте почтовый файл и выберите один файл, который заканчивается с .shp

3) Добавить файл .shp в памяти устройства и получить, что местоположение файла

4) Присвоить, что местоположение файла в класс «шейп файл» OpenMap библиотеки (первый уровень)

5) класс «шейп файл» преобразовать эти данные и хранить в качестве класса «ESRIRecord» (Второй уровень)

6) И, наконец, с помощью "ESRIRecord" мы получаем PolygonOptions х и у точек, которые присваивает отображать форму на Google Map (третий уровень)

Что касается шагов: # 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); 
    } 

enter image description here