def findFeatures(self, point): #If we don't have a any layers to forms mappings yet just exit. if not self.layerstoformmapping: return layer = self.layerstoformmapping.iterkeys().next() searchRadius = QgsTolerance.toleranceInMapUnits( 5, layer, \ self.canvas.mapRenderer(), QgsTolerance.Pixels) rect = QgsRectangle() rect.setXMinimum( point.x() - searchRadius ); rect.setXMaximum( point.x() + searchRadius ); rect.setYMinimum( point.y() - searchRadius ); rect.setYMaximum( point.y() + searchRadius ); log("Finding Featues at %s with radius of %s" % (point, searchRadius)) featuresToForms = {} for layer, form in self.layerstoformmapping.iteritems(): layer.select( layer.pendingAllAttributesList(), rect, True, True) for feature in layer: featuresToForms[feature] = (form, layer) if len(featuresToForms) == 1: form, layer = featuresToForms.itervalues().next() feature = featuresToForms.iterkeys().next() self.openForm(form, feature, layer) elif len(featuresToForms) > 0: listUi = ListFeaturesForm() listUi.loadFeatureList(featuresToForms) listUi.openFeatureForm.connect(self.openForm) listUi.exec_()
def highlightFeatures(self, point): if not qmap.QMap.layerformmap: return layer = qmap.QMap.layerformmap.iterkeys().next() searchRadius = QgsTolerance.toleranceInMapUnits(5, layer, self.canvas.mapRenderer(), QgsTolerance.Pixels) rect = QgsRectangle() rect.setXMinimum(point.x() - searchRadius) rect.setXMaximum(point.x() + searchRadius) rect.setYMinimum(point.y() - searchRadius) rect.setYMaximum(point.y() + searchRadius) self.band.reset() for layer in qmap.QMap.layerformmap.iterkeys(): layer.select([], rect, True, True) for feature in layer: log("Looping feature") if not feature.isValid(): continue log("Adding to rubber band") self.band.addGeometry(feature.geometry(), None)