Suite

Requête spatiale Javascript ArcGIS avec Lat Lng ou X Y ?


J'utilise Google Maps sur le front-end car tout ce dont j'ai besoin sur cette vue est d'afficher les points. Lorsque l'utilisateur clique sur la carte dans la vue, il sélectionne un point donnant ainsi lat et lng. J'essaie d'utiliser le lat et le lng pour interroger mes couches d'entités et trouver les entités contenant le point, mais cela donne encore et encore la même erreur.

TypeError : undefined n'est pas une fonction {pile : (… ), message : "undefined n'est pas une fonction"} "TypeError : undefined n'est pas une fonction chez p.toJson (http://js.arcgis.com/3.13/init .js:589:112) à p.execute (http://js.arcgis.com/3.13/init.js:267:406) à A._createWrappers.p.forEach.c.(fonction anonyme).g. addCallbacks.d (http://js.arcgis.com/3.13/init.js:723:454) à c (http://js.arcgis.com/3.13/init.js:76:221) à b. Deferred.A.then.then [as then] (http://js.arcgis.com/3.13/init.js:78:301) à b.Deferred.addCallbacks (http://js.arcgis.com/3.13 /init.js:78:144) à A._createWrappers.p.forEach.c.(fonction anonyme) [as execute] (http://js.arcgis.com/3.13/init.js:723:382) à http://localhost:26196/Projects/Add:4678:27 à ha (http://js.arcgis.com/3.13/init.js:32:473) à http://js.arcgis.com/3.13 /init.js:25:61"

Le code qui génère l'erreur est collé ci-dessous.

require([ "esri/map", "esri/tasks/query", "esri/tasks/QueryTask", "esri/SpatialReference", "esri/geometry/Point", "dojo/dom" ], fonction (Map, Query, QueryTask, SpatialReference, Point, dom) { var query = new Query (); query.outSpatialReference = { wkid: 4326 }; query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS; query.returnGeometry = true; query.outFields = "*" ; var point = new Point(); point.setX(lng); point.setY(lat); query.geometry = point; query.where = "1=1"; var queryTask = new QueryTask("http:// myServer/arcgis/rest/services/ApplicationServices/DataService/MapServer/6/"); queryTask.execute(query, function(a){ debugger }, function(e){ debugger }); });

J'ai trouvé l'extrait quelque part en ligne, la seule différence est que requête.geometry a été défini comme événement.Point dans l'exemple pendant que je pose moi-même un point.


l'erreur cryptique est levée car query.outFields attend un tableau

query.outFields = ["*"];


var distance, map, infobox, dataLayer, ctx, listItems, listTitle, sLat, sLon, travelDistance=0 ; var BingMapsKey = "AjYUIdfUv0O7_oGQK0ohkFX_goDqb3e83CcgTXu4u54tFW1LvinADSBaoIF4eui0" fonction getDetails() { var zip = document.getElementById("tzipcode.quest").value distance = // var. REST/v1/Locations?query=" + zip + "&output=json&jsonp=UpdateFields&key=" + BingMapsKey; CallRestService(geocodeRequest) getMap() } function UpdateFields(result) { if (result && result.resourceSets && result.resourceSets.length > 0 && result.resourceSets[0].resources && result.resourceSets[0].resourceSets.length > 0) { sLat = result.resourceSets[0].resources[0].point.coordinates[0] +"; sLon = result.resourceSets[0].resources[0].point.coordinates[1] +"; } } function CallRestService(request) { var script = document.createElement("script"); script.setAttribute("type", "texte/javascript"); script.setAttribute("src", requête); document.body.appendChild(script); } fonction getMap() { map = new Microsoft.Maps.Map(document.getElementById('myMap'), {informations d'identification : 'AjYUIdfUv0O7_oGQK0ohkFX_goDqb3e83CcgTXu4u54tFW1LvinADSBaoIF4eui0,', zoom :39. ); dataLayer = new Microsoft.Maps.EntityCollection(); map.entities.push(dataLayer); var infoboxLayer = new Microsoft.Maps.EntityCollection(); map.entities.push(infoboxLayer); infobox = new Microsoft.Maps.Infobox(new Microsoft.Maps.Location(0, 0), { visible : false, offset : new Microsoft.Maps.Point (0, 20) }); infoboxLayer.push(infobox); listTitle = "BrokerAgents" if(listTitle){ window.parent.ExecuteOrDelayUntilScriptLoaded(loadList, 'sp.js'); } } function loadList(){ getListItems(listTitle); } fonction getListItems(listTitle){ ctx = new window.parent.SP.ClientContext.get_current(); var targetList = ctx.get_web().get_lists().getByTitle(listTitle); var query = window.parent.SP.CamlQuery.createAllItemsQuery(); listItems = targetList.getItems(query); ctx.load(listItems); ctx.executeQueryAsync(onLoadItemsSuccess, onLoadItemsFail); } function onLoadItemsFail(sender, args) { alert('Impossible d'obtenir les éléments des listes. Erreur :' + args.get_message()); } function onLoadItemsSuccess(sender, args) { var listEnumerator = listItems.getEnumerator(); élément var, broche, loc; while (listEnumerator.moveNext()) { item = listEnumerator.get_current(); travelDistance = 0 var itemLat = item.get_item("broker_x002d_position_x002d_lati") var itemLon = item.get_item("broker_x002d_position_x002d_long") getDistance(itemLat, itemLon) if(travelDistance != 0 && travelDistance 0 && result1.resources]. result1.resourceSets[0].resources.length > 0) { travelDistance = result1.resourceSets[0].resources[0].route.traveldistance +"; } } function displayInfobox(e) { if (e.targetType == ' pushpin') { infobox.setLocation(e.target.getLocation()); infobox.setOptions({ visible : true, titre : e.target.Metadata.Title, description : e.target.Metadata.Location }); } } function getQueryStringValue(key) { var queryString = document.URL.split("?"); if(queryString && queryString.length > 1) { var params = queryString[1].split("&"); for (var i = 0 ; je

Code postal Distance 1

mille 5

milles 10

milles 15

milles 20

milles 25

milles

Nous faire parvenir {

couleur d'arrière-plan : #e56717 ; rembourrage : .5em ; -moz-border-radius : 5px ; -webkit-border-radius : 5px ; rayon de bordure : 6 px ; couleur : #fff ; font-family : 'Arial' ; taille de la police : 20 px ; texte-décoration : aucun ; bordure : aucune ; } Rechercher