<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style>
<!--
@font-face
        {font-family:Helvetica}
@font-face
        {font-family:"Cambria Math"}
@font-face
        {font-family:Calibri}
@font-face
        {font-family:Tahoma}
@font-face
        {font-family:"Franklin Gothic Book"}
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
a:link, span.MsoHyperlink
        {color:#0563C1;
        text-decoration:underline}
span.EmailStyle21
        {font-family:"Calibri",sans-serif;
        color:windowtext}
.MsoChpDefault
        {font-size:10.0pt;
        font-family:"Calibri",sans-serif}
@page WordSection1
        {margin:1.0in 1.0in 1.0in 1.0in}
-->
</style><style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0" vlink="#954F72" link="#0563C1" lang="EN-US">
<div style="direction: ltr;font-family: Helvetica;color: #000000;font-size: 10pt;">
<div>It should not be called multiple times — that's a bug. It will be fixed soon in a PR that is being reviewed, so it should be present in the next release.</div>
<div><br>
</div>
<div>The value passed to onMeshCreated is a THREE.Mesh. The fact that the features are merged into one is the default behavior, because it is the usecase we have the most here. It should be documented better, and in the meantime you can use:</div>
<div>    layer.mergedFeatures = false</div>
<div>and it should resolve your problem. Then, `onMeshCreated` should get a THREE.Group that has multiple THREE.Mesh as children.</div>
<div><br>
</div>
<div>Adrien<br>
</div>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div id="divRpF460818" style="direction: ltr;"><font size="2" face="Tahoma" color="#000000"><b>De :</b> ITowns-user [itowns-user-bounces@lists.osgeo.org] de la part de Johnston, Chad [Chad.Johnston@parsons.com]<br>
<b>Envoyé :</b> mardi 21 avril 2020 16:21<br>
<b>À :</b> itowns-user@lists.osgeo.org<br>
<b>Objet :</b> Re: [iTowns-user] Accessing features of a GeometryLayer<br>
</font><br>
</div>
<div></div>
<div>
<div class="WordSection1">
<p class="MsoNormal">I looked at the onMeshCreated callback but I don’t think I understand it very well.
</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">In my small sample app, I have 3 features on the GeometryLayer from a FileSource. As I zoom in and out, I see onMeshCreated get called multiple times – does this mean new ThreeJS objects are being created for all zoom levels?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Also, the values that get passed in to onMeshCreated don’t seem to represent individual features. Is there a one-to-one mapping between a feature defined in the FileSource and a ThreeJS object that gets created? The object passed in to
 onMeshCreated seems to represent something that holds all of the features.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I have a use case where I will need to change visibility for individual features in the layer. Am I going about this the wrong way by trying to access the ThreeJS objects? Is there another way to accomplish this?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Chad</p>
<p class="MsoNormal"> </p>
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Adrien Berthet <Adrien.Berthet@ign.fr> <br>
<b>Sent:</b> Tuesday, April 21, 2020 12:46 AM<br>
<b>To:</b> Johnston, Chad <Chad.Johnston@parsons.com>; itowns-user@lists.osgeo.org<br>
<b>Subject:</b> [EXTERNAL] RE:Accessing features of a GeometryLayer</p>
</div>
</div>
<p class="MsoNormal"> </p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black">Hi Chad,</span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black"> </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black">I assume you are using a
<b>FileSource</b> ? In this case, you can use <b>layer.source.parsedData</b> to access the
<b>FeatureCollection</b> (which is an internal itowns format).</span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black"> </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black">If you meant the ThreeJS objects, you can get them by setting a
<b>onMeshCreated</b> to your layer, like in this case for example: <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_iTowns_itowns_blob_master_examples_source-5Fstream-5Fwfs-5F3d.html-23L189-2DL192&d=DwMF-g&c=Nwf-pp4xtYRe0sCRVM8_LWH54joYF7EKmrYIdfxIq10&r=mQjF0_nPzjZcqOc5JWZp-Sz0OqXtNQ5NEp_IsAW3X-I&m=lbRrkYQRGdYF3aF_Q9iTbEjabC6FpWGbSR2gFv9NP2k&s=jrJw2LpCSd80WmcQQlDuec8u91wxQwfpL-UYrnMBDYA&e=" target="_blank" rel="noopener noreferrer">
https://github.com/iTowns/itowns/blob/master/examples/source_stream_wfs_3d.html#L189-L192 [github.com]</a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black">It allows you to access the mesh once it has been created, and you can even use this method with a stream.</span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black"> </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black">Hope it helps a bit</span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black"> </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black">Adrien</span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Helvetica",sans-serif; color:black"> </span></p>
</div>
<div>
<div class="MsoNormal" style="text-align:center" align="center"><span style="font-size:12.0pt; font-family:"Times New Roman",serif; color:black">
<hr width="100%" size="2" align="center">
</span></div>
<div id="divRpF587157">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:10.0pt; font-family:"Tahoma",sans-serif; color:black">De :</span></b><span style="font-size:10.0pt; font-family:"Tahoma",sans-serif; color:black"> ITowns-user [itowns-user-bounces@lists.osgeo.org]
 de la part de Johnston, Chad [Chad.Johnston@parsons.com]<br>
<b>Envoyé :</b> lundi 20 avril 2020 19:57<br>
<b>À :</b> <a href="mailto:itowns-user@lists.osgeo.org" target="_blank" rel="noopener noreferrer">
itowns-user@lists.osgeo.org</a><br>
<b>Objet :</b> [iTowns-user] Accessing features of a GeometryLayer</span><span style="font-size:12.0pt; font-family:"Times New Roman",serif; color:black"></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">How can I access features that were added to a GeometryLayer from a GeoJSON source? I have to pass in a ThreeJS Group to the GeometryLayer constructor, but that object ends up having no children so I’m not sure
 where the actual features end up in the scene.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">To be clear, I’d like to be able to access individual ThreeJS objects that represent each feature in the layer. I don’t know if that’s how they’re created and added to the scene, but it seems logical since they
 can be different colors.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">Thanks,</span></p>
<p class="MsoNormal"><span style="color:black">Chad</span></p>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt; font-family:"Times New Roman",serif; color:black"> </span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Franklin Gothic Book",sans-serif; color:black">NOTICE: This email message and all attachments transmitted with it may contain privileged and confidential information, and information that is protected
 by, and proprietary to, Parsons Corporation, and is intended solely for the use of the addressee for the specific purpose set forth in this communication. If the reader of this message is not the intended recipient, you are hereby notified that any reading,
 dissemination, distribution, copying, or other use of this message or its attachments is strictly prohibited, and you should delete this message and all copies and backups thereof. The recipient may not further distribute or use any of the information contained
 herein without the express written authorization of the sender. If you have received this message in error, or if you have any questions regarding the use of the proprietary information contained therein, please contact the sender of this message immediately,
 and the sender will provide you with further instructions.</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>