Daha çox

Offline shapefiles-ı Android-də göstərmək üçün açıq mənbə kitabxanası?

Offline shapefiles-ı Android-də göstərmək üçün açıq mənbə kitabxanası?


Esri Shapefiles-dən istifadə edə bilməsi lazım olan bir Android tətbiqetməsinin hazırlanmasında iştirak edirəm. İstifadə olunan cihaz, Android 4.2 və ya daha sonrakı bir versiyada işləyən 7 "Android möhkəm tablet olacaq. Oflayn bir tətbiqdir, shapefiles cihazın SD Kartına yüklənir. Tətbiqdə yoxlanılması lazım olan müxtəlif binaları təmsil edən formalı bir xəritə göstəriləcəkdir. İstifadəçi sonra binaları təmsil edən bir formanı tıklayacaq və hansı binaların yoxlanıldığını müəyyənləşdirmək üçün məlumatları tıklanan forma çatdırmalıyam və istifadəçinin mövcud vəziyyətinin forma hüdudlarına düşdüyünə əmin olmalıyam. xəritədə yalnız pan və böyüdəcəkdir. Xəritədə istifadəçilərin cari vəziyyəti mərkəzləşdirilməli və mövcud vəziyyət göstərilməlidir. Mobil operatorun əhatə dairəsi zəif olduğu üçün istifadəçi ofisdə olduqdan sonra yoxlama məlumatları Wi-Fi vasitəsilə sinxronlaşdırılır. bəzi ərazilərdə.

Zəhmət olmasa bunun həyata keçirilə biləcəyi pulsuz / açıq mənbəli kitabxana tövsiyə edin.


Sonda getdik: https://developers.arcgis.com/android Budur işə başlamaq üçün nümunə kodu…

xüsusi Boolean setBaseLayer () {Fayl myShapeFilePath = boş; cəhd edin {if (MyApplication.mPathMaps == null || MyApplication.mPathMaps.length () <1) {File rootDir = new File (Environment.getExternalStorageDirectory (). getAbsolutePath (), getApplication (). getApplicationInfo (). packName)); File tmpDir = yeni Fayl (rootDir, "maps"); MyApplication.mPathMaps = tmpDir.getAbsolutePath (); } myShapeFilePath = yeni Fayl (MyApplication.mPathMaps, BASE_LAYER_PATH); if (! myShapeFilePath.exists ()) {displayFatalErrorMsg ("Baza xəritəsini:  n" -də tapmaq mümkün olmadı + myShapeFilePath.getAbsolutePath ()); yalan qayıt; } ShapefileFeatureTable shapefileFeatureTable = yeni ShapefileFeatureTable (myShapeFilePath.toString ()); FeatureLayer featureLayer = yeni FeatureLayer (shapefileFeatureTable); əgər (MyUVRvalues.getInstance (). getBaseLayerColor (). isEmpty ()) {displayFatalErrorMsg ("'GIS_BASE_LAYER' üçün konfiqurasiya dəyəri alınmadı"); yalan qayıt; } // int color = Color.argb (255, 84, 110, 122); // a = şəffaflıq 0 - 255 int color = Color.parseColor (MyUVRvalues.getInstance (). getBaseLayerColor ()); SimpleFillSymbol simpleFillSymbol = yeni SimpleFillSymbol (rəng, SimpleFillSymbol.STYLE.SOLID); SimpleRenderer simpleRenderer = yeni SimpleRenderer (simpleFillSymbol); featureLayer.setRenderer (simpleRenderer); xüsusiyyətLayer.setVisible (doğru); mMapView.addLayer (featureLayer); } tutmaq (FileNotFoundException e) {displayFatalErrorMsg ("setBaseLayer () Uğursuz, baza xəritəsini tapa bilmədi:  n" + myShapeFilePath.getAbsolutePath () + " n" + e.toString ()); yalan qayıt; } true qayıt; } xüsusi Boolean setFeatureLayer (Boolean görünür) {Fayl myShapeFilePath = null; cəhd edin {myShapeFilePath = yeni Fayl (MyApplication.mPathMaps, FEATURE_LAYER_PATH); if (! myShapeFilePath.exists ()) {displayFatalErrorMsg ("Xüsusiyyət xəritəsi:  n" -də tapıla bilmədi + myShapeFilePath.getAbsolutePath ()); yalan qayıt; } ShapefileFeatureTable shapefileFeatureTable = yeni ShapefileFeatureTable (myShapeFilePath.toString ()); mFeatureLayer = yeni FeatureLayer (shapefileFeatureTable); mFeatureLayer.setRenderer (getUniqueValueRenderer ()); mFeatureLayer.setSelectionColorWidth (7); // DP-də tam (sıxlıqdan asılı olmayan piksel). mFeatureLayer.setSelectionColor (Color.YELLOW); mFeatureLayer.setVisible (görünür); // Yalnız mMapView.addLayer (mFeatureLayer) böyüdüləndə göstər; } tutmaq (FileNotFoundException e) {displayFatalErrorMsg ("Xüsusiyyət xəritəsi:  n" + myShapeFilePath.getAbsolutePath () ünvanında yerləşə bilmədi); yalan qayıt; } catch (Exception e) {displayFatalErrorMsg ("setFeatureLayer () istisnaya səbəb oldu:  n" + e.toString ()); yalan qayıt; } true qayıt; } xüsusi UniqueValueRenderer getUniqueValueRenderer () İstisnanı atır {// UniqueValueRenderer uniqueValueRenderer = yeni UniqueValueRenderer () xüsusiyyətinə bənzərsiz dəyərlər təyin etmək üçün istifadə olunan UniqueValueRenderer; // benzersiz dəyərlər üçün sahəni təyin etmək uniqueValueRenderer.setField1 (MyUVRvalues.getInstance (). getFieldName ()); // Bölgəni doldurmaq üçün istifadə olunan göstərmə növü SimpleFillSymbol defaultsymbol = new SimpleFillSymbol (Color.parseColor (MyUVRvalues.getInstance (). GetDefaultColor ())); uniqueValueRenderer.setDefaultSymbol (defaultsymbol); üçün (UVRFields sahəsi: MyUVRvalues.getInstance (). getUVRFields ()) {UniqueValue uv = yeni UniqueValue (); String [] uniqueAttribute = {field.getValue ()}; uv.setValue (uniqueAttribute); // Hər bölgə üçün simvol tərifi uv.setSymbol (yeni SimpleFillSymbol (Color.parseColor (field.getColor ()))); uniqueValueRenderer.addUniqueValue (uv); } uniqueValueRenderer qayıt; }