<div dir="ltr">As far as I understand, the ol.source.VectorTile class wasn't specifically designed to have tileUrlFunction as a function that can be overriden and that will be called with a specific this context.<div><br></div><div>I think the general idea is that you can just pass any function as options.tileUrlFunction, and it just happened to be called with a this context of the class before version 4.2.0, but I guess this was never really an intended feature.</div><div><br></div><div>For your specific issue, I think you could rename the function in your class to avoid confusion, e.g.</div><div><br></div><div><div>ol.source.GWCVT.prototype.defaultTileUrlFunction =</div><div>    function(tileCoord, pixelRatio, projection) {</div></div><div>  // ...</div><div>};</div><div><br></div><div>and then pass it as options.tileUrlFunction to the super class in your constructor, with correctly bound this:</div><div><br></div><div><div>ol.source.GWCVT = function(options) {</div><div>  var tileUrlFunction = options.tileUrlFunction || this.defaultTileUrlFunction.bind(this);</div><div><br></div><div>  ol.source.VectorTile.call(this, {</div><div>    tileUrlFunction: tileUrlFunction,</div><div>    ...</div><div>  });</div><div>};</div></div><div><br></div><div>Hope that helps!</div><div><br></div><div>Cheers,</div><div><br></div><div>Roman</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 12, 2017 at 2:33 PM, Christian Mayer <span dir="ltr"><<a href="mailto:ml-cm@meggsimum.de" target="_blank">ml-cm@meggsimum.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <p><font face="Helvetica, Arial, sans-serif">Hi again,<br>
      </font></p>
    <p><font face="Helvetica, Arial, sans-serif">here is some more
        information in addition to my previous mail:</font></p>
    <p><font face="Helvetica, Arial, sans-serif">The problem occurs for
        VectorTiles in GeoJSON format as well. So there must be a more
        general problem with extending the </font><br>
      <font face="Helvetica, Arial, sans-serif">ol.source.VectorTile (or
        the way I do it).<br>
        The change / problem seems to be introduced with Version 4.2.0.
        With version 4.1.1 everything works as expected.</font></p>
    <p><font face="Helvetica, Arial, sans-serif">Cheers<br>
        Chris<br>
      </font></p><div><div class="h5">
    <p><font face="Helvetica, Arial, sans-serif"></font><br>
    </p>
    <div class="m_-5162081911146622419moz-cite-prefix">On 12.10.2017 13:45, Christian Mayer
      wrote:<br>
    </div>
    </div></div><blockquote type="cite"><div><div class="h5">
      
      <p><font face="Helvetica, Arial, sans-serif">Hi all,</font></p>
      <p>I extended the class ol.source.VectorTile in order to load
        VectorTiles in different formats (GeoJSON and MVT) from a local
        GWC cache. While upgrading from OpenLayers v3.20 to OpenLayers
        v4.x it seems that for MVT the scope in the "tileUrlFunction"
        gets lost. It seems to be "window". For GeoJSON-based
        VectorTiles everything is still running fine.</p>
      <p>Below you find the crutial parts of my class:</p>
      <p><tt>ol.inherits(ol.source.GWCVT, ol.source.VectorTile);</tt><tt><br>
        </tt><tt><br>
        </tt><tt>ol.source.GWCVT.prototype.<wbr>tileUrlFunction =</tt><tt><br>
        </tt><tt>    function(tileCoord, pixelRatio, projection) {</tt></p>
      <p><tt>// here 'this' becomes 'window' in the second call<br>
        </tt></p>
      <p><tt>// assembling the URL</tt><tt><br>
        </tt><tt>// ...</tt><tt><br>
        </tt></p>
      <p><tt>}</tt></p>
      <p><tt>ol.source.GWCVT.prototype.<wbr>setTileUrlFunction =
          function(tileUrlFunction) {</tt><tt><br>
        </tt><tt><br>
        </tt><tt> 
          ol.source.VectorTile.<wbr>prototype.setTileUrlFunction.<wbr>call(this,
          tileUrlFunction);</tt><tt><br>
        </tt><tt>};</tt></p>
      <p>Thanks for any hint!</p>
      Cheers<br>
      Chris <br>
      <fieldset class="m_-5162081911146622419mimeAttachmentHeader"></fieldset>
      <br>
      </div></div><pre>______________________________<wbr>_________________
Dev mailing list
<a class="m_-5162081911146622419moz-txt-link-abbreviated" href="mailto:Dev@lists.osgeo.org" target="_blank">Dev@lists.osgeo.org</a>
<a class="m_-5162081911146622419moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/openlayers-dev" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/openlayers-<wbr>dev</a></pre>
    </blockquote>
    <br>
  </div>

<br>______________________________<wbr>_________________<br>
Dev mailing list<br>
<a href="mailto:Dev@lists.osgeo.org">Dev@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/openlayers-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/openlayers-<wbr>dev</a><br></blockquote></div><br></div>