2017-05-09 3 views
1

J'ai sélectionné la fonction (couche d'entités) de la zone de liste déroulante et elle effectue un zoom sur la fonction. Maintenant, je veux effacer la slection et la carte combobox. et zoom carte à son zoom par défaut.Effacer le zoom et les géométries de la couche d'entités

//combobox selection clear 
    dijit.byId("A1").reset(); 
    dijit.byId("A2").reset(); 
    dijit.byId("A3").reset(); 
    dijit.byId("A4").reset(); 
    dijit.byId("A5").reset(); 

    //layer selection clear 
    document.getElementById('A1_layer').clearSelection(); 
     document.getElementById('A2_layerC').clearSelection(); 
     document.getElementById('A3_layerC').clearSelection(); 
     document.getElementById('A4_layerC').clearSelection(); 
     document.getElementById('A5_layerC').clearSelection(); 



app = { 
    zoomRow: function(id, which){ 

     var query = new Query(); 
     //var thePoly, theExtent; 
     if(which == "Land"){ 
     query.where = "Name='" + (id).toString() + "'"; 
     console.info(query.where); 
     query.returnGeometry = true; 
     A1_layer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (features) { 
      thePoly = features[0].geometry; 
      theExtent = thePoly.getExtent().expand(2); //Zoom out slightly from the polygon's extent 
      map.setExtent(theExtent); 
     }); 
     esriRequest({ 
      url: "http://localhost:6080/arcgis/rest/services/........", 
      content:{ 
      f:'json' 
      }, 
      handleAs:'json', 
      callbackParamName:'callback', 
      timeout:15000 
     }).then(lang.hitch(this,function(response){ 
      var store2 = new Memory({data:[]}); 
      dijit.byId("A2").set('store',store2); 
      var data = array.map(response.features,lang.hitch(this,function(feat, index){ 
      var name = feat.attributes.nam; 
      var dataItem = { 
       id:index, 
       name:name 
      }; 
      return dataItem; 
      })); 
      store2 = new Memory({data:data}); 
      dijit.byId("A2").set('store',store2); 
      document.getElementById('A2').value = "Select Room"; 
     })); 
     } 
<input id="A1" data-dojo-type="dijit/form/ComboBox" value="Select landing" onchange="app.zoomRow(document.getElementById('A1').value, 'Land');" data-dojo-props="maxHeight: 200" style="overflow:auto; width:200px; background-color: #E7FCCA "/ ><br></br> 
    <input id="A2" data-dojo-type="dijit/form/ComboBox" value="Select room onchange="app.zoomRow(document.getElementById('A2').value, 'Room');"style="overflow:auto; width:200px ;background-color: #E7FCCA" /> <br></br> 

mais je me suis erreur « Impossible de lire la propriété « géométrie » undefined »

Répondre

3

Pour éviter l'erreur, vous pouvez tout d'abord vérifier la fonction avant d'obtenir la géométrie.

A1_layer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (features) { 
     if(features && features[0] && features[0].geometry){ 
      thePoly = features[0].geometry; 
      theExtent = thePoly.getExtent().expand(2); //Zoom out slightly from the polygon's extent 
      map.setExtent(theExtent); 
      } 
     }); 

Note: - cela va cesser de jeter l'erreur mais il bloque la fonction définie de mesure aussi. Donc, pour setExtent vous devez trouver quelque chose d'autre en l'absence de fonctionnalité trouvée.

En espérant que cela vous aidera :)

+0

setExtent dans la fonction clearall? oui j'ai mis l'ampleur –

+0

oook ... coooool –

0

Eh bien, il peut y avoir plusieurs raisons pour « ne peut pas lire la propriété « géométrie » undefined » erreur.

Cela se produit car vous accédez à l'attribut "geometry" d'un élément "non défini".

quelque part dans votre code, vous avez ajouté xyz.geometry. "xyz" peut être n'importe quel objet js.

Voici le lien de quelques problèmes similaires.

https://geonet.esri.com/thread/186541-uncaught-typeerror-cannot-read-property-geometry-of-undefined

https://gis.stackexchange.com/questions/182364/uncaught-typeerror-cannot-read-property-on-of-undefined

Espérant plus haut indice vous aidera à résoudre le problème.

+0

si vous regardez mon code u peut voir le thepoly = fonction [0] .gemtry. voici le problème. La couche d'entités effacera mais en quelque sorte ce tableau ne s'efface pas. –

+0

oui c'est un projet –

+0

j'ai mis à jour mon code ici https://gis.stackexchange.com/questions/239693/clear-map-zoom-and-geometries-of-feature-layer?noredirect=1#comment374272_239693 –