Menambahkan API JavaScript FeatureLayer ARCGIS

8

Saat ini saya sedang mengeksplorasi API JavaScript ArcGIS. Saya memiliki layanan peta saya sendiri dan layanan fitur di server lokal saya. Saya ingin menggunakan FeatuerLayer untuk memilih dan menyorot fitur pada peta. Tetapi ketika saya menambahkan layanan fitur saya, saya mendapatkan kesalahan berikut.

TypeError: Unable to draw graphic (geometry:null, symbol:null): _14 is undefined

Saya tidak dapat menemukan apa ini, dan saya tidak yakin apakah lapisan fitur telah ditambahkan ke peta atau tidak. Bagaimana saya bisa mengecek apakah sudah ditambahkan? Saya mencoba menggunakan metode dojo.connect dengan FeatureLayer dengan acara onClick. Tapi ini sepertinya tidak berhasil. Sudah menempatkan kode di bawah ini

Kode:

esri.config.defaults.io.proxyUrl = "proxy.ashx";
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.map");
dojo.require("esri.layers.FeatureLayer");
dojo.require("esri.tasks.query");

var map;
var selectionToolbar;
var infoTemplate = new esri.InfoTemplate();
infoTemplate.setTitle("${ROADNAME}");
infoTemplate.setContent("<b>ROAD NAME: </b>${LINK_ID}<br/>" + "<b>CAT</b>${CAT}</b>");

function init() {
  try {
    var initExtent = new esri.geometry.Extent({
      "xmin": 103.55,
      "ymin": 1.13,
      "xmax": 104.16,
      "ymax": 1.56,
      "spatialReference": {
        "wkid": 4326
      }
    });

    map = new esri.Map("map", {
      extent: esri.geometry.geographicToWebMercator(initExtent)
    });

    var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer");

    //my map service layer
    var basemap_sing = new esri.layers.ArcGISTiledMapServiceLayer("http://karthikpc:8399/arcgis/rest/services/Carriage_Mercantor/MapServer", {
      displayLevels: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
    });
    // my feature layer which i am not able to use              
    var featureLayer = new esri.layers.FeatureLayer("http://karthikpc:8399/arcgis/rest/services/Carriage_Mercantor/FeatureServer", {
      mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
      infoTemplate: infoTemplate,
      outFields: ["*"]
    });

    map.addLayer(basemap);
    map.addLayer(base_sing);
    map.addLayer(featureLayer);

    dojo.connect(map, "onLoad", initSelectToolbar);
    dojo.connect(featureLayer."onClick", helloworld);
  } catch (e) {
    alert('An error has occurred: ' + e.message);
  }

}

function helloworld() {
  alert("hello world");
}

dojo.addOnLoad(init);
Karthik Bharadwaj
sumber

Jawaban:

4

URL diteruskan ke esri.layers.FeatureLayer perlu untuk lapisan tertentu. Kode Anda menunjuk ke akar dari layanan fitur.

Untuk memperbaikinya, tambahkan indeks lapisan dari lapisan URL. Misalnya, dalam layanan fitur ini , layer rivers adalah layer 1. Untuk membuat layer fitur menggunakan layer ini, Anda akan menggunakan url ini: http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Hydrography/Watershed173811/ FeatureServer / 1 . Ini ditunjukkan dalam sampel lapisan fitur ONDEMAND meskipun sampel menggunakan layanan peta. Jika Anda hanya menampilkan data, Anda dapat menggunakan layanan peta untuk layanan fitur. Jika Anda ingin mengedit data melalui API ArcGIS untuk JavaScript, Anda harus menggunakan URL layanan fitur.

Derek Swingley
sumber
Terima kasih untuk balasan Anda. Saya sudah mencobanya, saya pikir lapisan fitur telah ditambahkan. Saya memeriksa menggunakan acara onload. Tetapi ketika saya mencoba acara onclick pada lapisan fitur itu tidak berhasil. Tolong sarankan cara terbaik untuk mengidentifikasi jika lapisan fitur telah ditambahkan dan memanfaatkannya. Tujuan saya dari aplikasi saya adalah 1) menyorot beberapa fitur, 2) mengedit beberapa fitur. Dari sampel saya pikir lapisan fitur akan membantu. Tolong koreksi saya jika saya salah.
Karthik Bharadwaj
@KarthikBharadwaj silakan kirim pertanyaan baru, komentarnya bukan tempat yang tepat untuk jenis diskusi ini.
Derek Swingley
1

FeatureLayer diakhiri dengan angka, yang lebih merupakan konsep array.

/ layanan / url / poin saya / di sini

vs.

/ fitur / url / poin / di sini / 0 saya

Url pertama menunjuk ke layanan yang berisi dari 1 hingga X Fitur. Sedangkan url kedua menunjuk ke Fitur spesifik di dalam layanan itu.

Semoga itu bisa membantu ...

randomblink
sumber