I am a beginner in javascript and I am working on a project using the ArcGIS javascript API. Since I am using shapefiles, I need a way to put them on the map automatically after a procedure. I have been suggested to convert the shapefile to a JSON string, which I did using ESRI.ArcGIS.ConversionTools.FeaturesToJSON. It gives me something like this:
{
"displayFieldName": "",
"fieldAliases": {
"FID": "FID",
"IDENTIFIER": "IDENTIFIER",
"DISPLAY": "DISPLAY",
"COLOUR": "COLOUR"
},
"geometryType": "esriGeometryPolyline",
"spatialReference": {
"wkid": 32186,
"latestWkid": 32186
},
"fields": [{
"name": "FID",
"type": "esriFieldTypeOID",
"alias": "FID"
}, {
"name": "IDENTIFIER",
"type": "esriFieldTypeString",
"alias": "IDENTIFIER",
"length": 254
}, {
"name": "DISPLAY",
"type": "esriFieldTypeString",
"alias": "DISPLAY",
"length": 254
}, {
"name": "COLOUR",
"type": "esriFieldTypeDouble",
"alias": "COLOUR"
}],
"features": [{
"attributes": {
"FID": 0,
"IDENTIFIER": " ",
"DISPLAY": "True",
"COLOUR": 0
},
"geometry": {
"paths": [
[
[230203.36252065492, 5370086.4987341948],
[230195.42152014989, 5370082.7258209372],
[230229.82547157537, 5370076.1204356803],
[230230.58002531325, 5370076.9307560939],
[230231.34286282485, 5370077.8994241506],
[230231.94069129985, 5370079.0473612295],
[230232.4038794667, 5370080.3275831603],
[230232.78926402796, 5370081.3478309968],
[230233.07412446581, 5370082.266860785],
[230233.20385479546, 5370082.7032454694],
[230233.49509875989, 5370083.1654702397],
[230233.81149685301, 5370083.6553206556],
[230233.89962032362, 5370083.7566910088],
[230234.22350693849, 5370083.8735930277],
[230235.23812436999, 5370084.6618494503],
[230235.7265868854, 5370085.0375824366],
[230236.93800452136, 5370086.1774356738],
[230238.91537520697, 5370087.1114649111],
[230241.20344435755, 5370088.5726968031],
[230242.10950562957, 5370089.1200344963],
[230243.1274934996, 5370089.6938548377],
[230245.73496147123, 5370091.402549807],
[230247.58051963543, 5370092.6832000325],
[230247.85058683314, 5370092.9499494741],
[230247.97786052118, 5370093.1999530876],
[230248.02382869384, 5370093.3950914163],
[230247.90815344563, 5370093.5550719444],
[230247.83746374052, 5370094.7770727118],
[230251.59447348068, 5370093.8700312478],
[230256.07295378071, 5370094.5567273004],
[230271.93292641686, 5370107.4999685455],
[230284.57099391034, 5370120.0941871861],
[230283.04288481449, 5370122.6776164165],
[230273.76307012059, 5370120.3203884307],
[230267.85401282064, 5370118.7949806377],
[230267.04651756078, 5370118.1997346235],
[230266.42955295654, 5370117.4808098888],
[230260.8462208565, 5370117.1535397889],
[230253.55863216554, 5370125.3309558751],
[230252.9894960777, 5370132.4784455141],
[230254.132238747, 5370135.4647953082],
[230251.42881939228, 5370134.9411432538],
[230249.04957992013, 5370132.2041026689],
[230251.995854404, 5370124.8109164219],
[230261.60623797448, 5370126.380779258],
[230271.53357044971, 5370133.660332839],
[230271.13617243501, 5370130.7853333829],
[230268.41419420805, 5370096.8456510343]
]
]
}
}]
}
Now I am trying to put this on the map but it does not work. I tried a few ways but seriously, I don't understand much what I am doing. It crashes on the new featureLayer with a "cannot get property length of undefined".
I don't care that much about converting it in JSON or not, I need to have a function which can put a shapefile on a ArcGIS javascript map.
Here is the code:
// shapeJSON is the JSON string
var featureCollection = {
"layerDefinition": null,
"featureSet": {
"features": [],
"geometryType": "esriGeometryPolyline"
}
};
featureCollection.layerDefinition = shapeJSON
addShapefileJSON(featureCollection);
var featureLayer = new esri.layers.FeatureLayer(featureCollection, {
mode: esri.layers.FeatureLayer.MODE_ONDEMAND
});
map.addLayer(featureLayer);