getQueryTemplate() {
    if (this.raw) {
      // I assume you know what you are doing.
      return Promise.resolve({
        queryString: this.raw
      });
    }

    if (!this.wayFilter) {
      throw new Error('Way filter is required');
    }

    return this.getBounds()
      .then(bounds => {
        let queryString;
        if (bounds.areaId) {
          queryString = `[timeout:${this.timeout}][maxsize:${this.maxHeapByteSize}][out:json];
area(${bounds.areaId});
(._; )->.area;
(${this.wayFilter}(area.area); node(w););
out ${this.outputMethod};`;
        } else if (bounds.bbox) {
          let bbox = serializeBBox(bounds.bbox);
          queryString = `[timeout:${this.timeout}][maxsize:${this.maxHeapByteSize}][bbox:${bbox}][out:json];
(${this.wayFilter}; node(w););
out ${this.outputMethod};`;
        }

        return {
          bounds,
          queryString
        }
      });
  }
Which projector should be used to map lon/lat to layer's x/y