def set_layer(self, layer, applyvalues=True): self.layer = layer if applyvalues: #check to make sure tiletype is in spinner. add if this is not true index = self.maptypeSpinner.findData(layer.tiletype) if index == -1: self.add_custom_type(layer.tiletype, "imported from project") self.autorefresh.setChecked(layer.autorefresh is True) self.set_selected_type(layer.tiletype) self.customUrl.setText("") if not self.layer.specifiedzoom is None: self.fixedZoom.setValue(self.layer.specifiedzoom) self.hasFixedZoom.setChecked(True) else: if self.layer.actualzoom is None: self.fixedZoom.setValue(tm.maxzoom(self.layer.tiletype)) else: self.fixedZoom.setValue(self.layer.actualzoom) if not self.layer.maxzoom is None: self.maxZoom.setValue(self.layer.maxzoom) self.hasMaxZoom.setChecked(True) else: self.maxZoom.setValue(tm.maxzoom(self.layer.tiletype)) self.set_summarystats() else: self.statusText.setText("")
def zoom(self, widthpx, extll): if self.specifiedzoom is None: maxzoom = tm.maxzoom(self.tiletype) if self.maxzoom is None else self.maxzoom autozoom = osm.autozoom(widthpx/(extll.xMaximum()-extll.xMinimum())) return min(max((tm.minzoom(self.tiletype), autozoom)), maxzoom) else: numtiles = len(osm.tiles(extll.xMinimum(), extll.xMaximum(), extll.yMinimum(), extll.yMaximum(), self.specifiedzoom)) if numtiles > qosmsettings.get(qosmsettings.MAX_TILES): log("too many tiles for fixed zoom layer!: %s" % numtiles) self.rendererrors += 1 return None else: return self.specifiedzoom