Lebih

ArcGIS Android - Kesalahan ArcGISFeatureLayer: EsriServiceException: Kesalahan Server Internal


Saya sedang mengembangkan aplikasi Android menggunakan tse ArcGIS SDK untuk Android. Saya menghadapi masalah saat menanyakan featurelayer: featurelayer yang saya gunakan di-host di ArcGIS Online kami, dan ini adalah kode yang saya gunakan untuk kueri:String terakhir publik mNonValidatedURL="http://LINK-TO-SERVICE/FeatureServer/0"; QueryParameters qParam = new QueryParameters(); qParam.setReturnGeometry(true); qParam.setOutSpatialReference(wm); qParam.setWhere("Validasi='Non-validé'"); qParam.setReturnGeometry(true); qParam.setOutFields(String baru[]{"*"}); Peta obf = HashMap baru(); obf.put("Tanggal", Pesan.ASC); qParam.setOrderByFields(obf); QueryTask qTask = new QueryTask(mNonValidatedURL); coba { Hasil FeatureResult = qTask.execute(qParam); mengembalikan hasil; } catch (Pengecualian e) { Log.e("pengecualian yang aneh", e.toString()); e.printStackTrace(); kembali nol; }

terkadang kueri dijalankan tanpa masalah tetapi sebagian besar waktu saya menemukan kesalahan ini:


Saya telah mengedit kode Anda. Ini adalah potongan kode yang berfungsi.

MainActivity kelas publik memperluas AppCompatActivity { QueryTask qTask; Tombol btn; @Override protected void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Tombol)findViewById(R.id.button); qTask = new QueryTask("http://services3.arcgis.com/hjUMsSJ87zgoicvl/ArcGIS/rest/services/PINV/FeatureServer/0"); btn.setOnClickListener(New View.OnClickListener() { @Override public void onClick(View v) { AsyncQueryTask ayncQuery = new AsyncQueryTask(); ayncQuery.execute("test"); } }); } kelas pribadi AsyncQueryTask memperluas AsyncTask { @Override protected void onPreExecute() { } @Override protected FeatureResult doInBackground(String… params) { QueryParameters qParameters = new QueryParameters(); String whereClause = "Validasi='Non-validé'"; String outFields[] = {"*"}; qParameters.setReturnGeometry(true); qParameters.setOutFields(outFields); qParameters.setWhere(whereClause); coba { Hasil FeatureResult = qTask.execute(qParameters); mengembalikan hasil; } catch (Pengecualian e) { e.printStackTrace(); } mengembalikan nol; } @Override protected void onPostExecute(FeatureResult results) { Envelope extent = new Envelope(); if (hasil != null) { int ukuran = (int) hasil.featureCount(); for (Elemen objek : hasil) { if (elemen instanceof Fitur) { Fitur fitur = (Fitur) elemen; // mengubah fitur menjadi mGraphicQuery if(feature.getGeometry().getType().equals(Geometry.Type.POLYGON)) { SimpleFillSymbol sms = new SimpleFillSymbol(Color.GREEN, SimpleFillSymbol.STYLE.SOLID); SimpleLineSymbol sms2 = SimpleLineSymbol baru(Color.GREEN, 1f, SimpleLineSymbol.STYLE.SOLID); sms.setOutline(sms2); sms.setAlpha(100); Grafik grafik = Grafik baru(feature.getGeometry(), sms, feature.getAttributes()); Poligon p = (Poligon) graphic.getGeometry(); p.queryEnvelope(luas); luas.merge(luas); } else if (feature.getGeometry().getType().equals(Geometry.Type.POINT)){ SimpleMarkerSymbol sms = new SimpleMarkerSymbol(Color.RED,15,SimpleMarkerSymbol.STYLE.CIRCLE); Grafik grafik = Grafik baru(feature.getGeometry(), sms, feature.getAttributes()); Titik p = (Titik) graphic.getGeometry(); p.queryEnvelope(luas); luas.merge(luas); } } } } if(results.featureCount()==0){ Toast.makeText(MainActivity.this, "Tidak ada hasil", Toast.LENGTH_SHORT).show(); } } } }


Tonton videonya: Adding a Feature Layer to an Android Application ArcGIS Runtime SDK for Android (Oktober 2021).