<div dir="ltr"><div><div><div>Hi Marco, <br></div><div><br>I'm using  categorized symbology too, the only difference I see is that I'm not calling <br><span style="font-size:10pt;font-family:"Courier New"" lang="EN-US"><br>
categorizedSymbolRendererV2->startRender(QgsRenderContext(), symbolsLayer);</span><br><br></div><div>nor <br></div><div><span style="font-size:10pt;font-family:"Courier New"" lang="EN-US"><br>categorizedSymbolRendererV2->renderFeature(feature, QgsRenderContext(), symbolsLayer->id().toInt(), false, false);<br>
<br></span></div></div>Maybe you can try a simple example with default simbology and see if it works ok, and then try to port it to your code. Anyway I'm new to qgis too, so not an expert here :)<br><br></div>Cheers. <br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/6/14 Marco Gomes <span dir="ltr"><<a href="mailto:marco.gomes@edisoft.pt" target="_blank">marco.gomes@edisoft.pt</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div link="blue" vlink="purple" lang="PT"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" lang="EN-US">Thank you Jordi!<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" lang="EN-US">But i am using a point memory layer as you mention but using special markers as defined below, and the code that you propose me, do not worked and my features with the symbols do not move. I need to have any kind of special consideration when moving feature points with marker symbols attached?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">//create Vector layer in memory for adding iamge markers<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsVectorLayer *symbolsLayer = new QgsVectorLayer("Point", "temporairy_points", "memory");<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsVectorDataProvider *provider = symbolsLayer->dataProvider();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">//create new feature<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsFeature feature = QgsFeature();<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsPoint point = ui.qgsMapCanvas->getCoordinateTransform()->toMapCoordinates(e->pos().x(), e->pos().y());<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsGeometry *geometry = geometry->fromPoint(point);         <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">feature.setGeometry(geometry);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsSvgMarkerSymbolLayerV2 svgMarkersymbolLayerV2 = new QgsSvgMarkerSymbolLayerV2(QCoreApplication::applicationDirPath () + "/data/symbols/test.svg");<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsSymbolLayerV2List symbolLayerV2List;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">symbolLayerV2List.clear();<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">symbolLayerV2List.append(svgMarkersymbolLayerV2);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsMarkerSymbolV2 *markerSymbolV2 = new QgsMarkerSymbolV2(symbolLayerV2List);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsRendererCategoryV2 *rendererCategoryV2 = new QgsRendererCategoryV2(0, markerSymbolV2, "0");<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsCategoryList categoryList;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">categoryList.clear();<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">categoryList.append(*rendererCategoryV2);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsCategorizedSymbolRendererV2 *categorizedSymbolRendererV2 = new QgsCategorizedSymbolRendererV2("A", categoryList);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">symbolsLayer->startEditing();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">symbolsLayer->setRendererV2(categorizedSymbolRendererV2);               <u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">symbolsLayer->addAttribute(QgsField("A", QVariant::String, "String", 4, 0, ""));<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QList<QgsField> lstFields;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">lstFields.insert(0, QgsField("A", QVariant::String, "String", 4, 0, ""));<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">provider->addAttributes(lstFields);<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">categorizedSymbolRendererV2->startRender(QgsRenderContext(), symbolsLayer);<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">feature.clearAttributeMap();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsAttributeMap attributeMap;<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">attributeMap.insert(0, "0");<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">feature.setAttributeMap(attributeMap);<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">categorizedSymbolRendererV2->renderFeature(feature, QgsRenderContext(), symbolsLayer->id().toInt(), false, false);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsFeatureList qgsfeaturesList = QgsFeatureList();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">qgsfeaturesList.append(feature);<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">provider->addFeatures(qgsfeaturesList);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">symbolsLayer->updateExtents();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">// Add the Vector Layer to the Layer Registry<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">QgsMapLayerRegistry::instance()->addMapLayer(symbolsLayer, false);<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">myLayerSet.prepend(QgsMapCanvasLayer(symbolsLayer, true));<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"" lang="EN-US">// Set the Map Canvas Layer Set<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">ui.qgsMapCanvas->setLayerSet(myLayerSet);</span><span style="font-size:10.0pt;font-family:"Courier New""><u></u><u></u></span></p>
<div class="im"><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" lang="EN-US"><u></u> <u></u></span></p><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" lang="EN-US">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" lang="EN-US"> <a href="mailto:qgis-developer-bounces@lists.osgeo.org" target="_blank">qgis-developer-bounces@lists.osgeo.org</a> [mailto:<a href="mailto:qgis-developer-bounces@lists.osgeo.org" target="_blank">qgis-developer-bounces@lists.osgeo.org</a>] <b>On Behalf Of </b>Jordi Torres<br>
<b>Sent:</b> Friday, June 14, 2013 11:54 AM<br><b>To:</b> <a href="mailto:qgis-developer@lists.osgeo.org" target="_blank">qgis-developer@lists.osgeo.org</a><br><b>Subject:</b> Re: [Qgis-developer] Using api to move features<u></u><u></u></span></p>
</div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">One more thing:<u></u><u></u></p><div><div class="h5"><div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>It should be _vectorLayer instead of _contactLayer in the last three lines.<u></u><u></u></p>
</div><div><p class="MsoNormal">Cheers.<u></u><u></u></p></div></div></div></div><div><div class="h5"><div><p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p><div><p class="MsoNormal">2013/6/14 Jordi Torres <<a href="mailto:jtorresfabra@gmail.com" target="_blank">jtorresfabra@gmail.com</a>><u></u><u></u></p>
<div><p class="MsoNormal">OOPs forgot to send it to the list.<u></u><u></u></p><div><div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p><div><div><div><div><p class="MsoNormal" style="margin-bottom:12.0pt">
Hi Marco, <u></u><u></u></p></div><p class="MsoNormal" style="margin-bottom:12.0pt">This is working for me, don't know if is the best option:<u></u><u></u></p></div><p class="MsoNormal">//_vector Layer is a point layer in memory<u></u><u></u></p>
<div><p class="MsoNormal"> _vectorLayer->startEditing();<br> QgsGeometryMap m;<u></u><u></u></p></div><div><p class="MsoNormal">//Pass the feature id and the new x,y<u></u><u></u></p></div><div><p class="MsoNormal"> m.insert(<a href="http://feature.id" target="_blank">feature.id</a>(),*QgsGeometry::fromPoint(QgsPoint(x,y)));<br>
 _vectorLayer->dataProvider()->changeGeometryValues(m);<br> _contactLayer->updateExtents();<br> _contactLayer->commitChanges();<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"> _contactLayer.triggerRepaint();<u></u><u></u></p>
</div><div><p class="MsoNormal">Hope it helps.<u></u><u></u></p></div></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p><div><p class="MsoNormal">2013/6/14 Marco Gomes <<a href="mailto:marco.gomes@edisoft.pt" target="_blank">marco.gomes@edisoft.pt</a>><u></u><u></u></p>
<div><div><div><div><p class="MsoNormal"><span lang="EN-US">I am trying to move features in a Qt timer without success. What it is missing?</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">Below all my trials to make this work.  </span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->dataProvider()->changeGeometryValues(geomMap);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->updateFeature(featureRoute_p);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">                    </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->changeGeometry(featureRoute_p.id(), geometry);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->moveVertex(finalPoint.x(), finalPoint.y(), featureRoute_p.id(), 0);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->changeGeometry(featureRoute_p.id(), geometry);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->updateFeature(featureRoute_p);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//categorizedSymbolRendererV2->renderFeature(featureRoute_p, QgsRenderContext(), pointMarkersLayer->id().toInt(), false, false);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->startEditing();</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->select(featureRoute_p.id(), false);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//featureRoute_p.setGeometry(QgsGeometry::fromPoint(finalPoint));</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->updateFeature(featureRoute_p);</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//float dx = finalPoint.x() - featureRoute_p.geometry()->asPoint().x();</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//float dy = finalPoint.y() - featureRoute_p.geometry()->asPoint().y();</span></span><u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas" lang="EN-US">       <span style="color:green">//pointMarkersLayer->translateFeature(featureRoute_p.id(), dx, dy);</span></span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p></div></div><p class="MsoNormal" style="margin-bottom:12.0pt">_______________________________________________<br>
Qgis-developer mailing list<br><a href="mailto:Qgis-developer@lists.osgeo.org" target="_blank">Qgis-developer@lists.osgeo.org</a><br><a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><u></u><u></u></p>
</div><p class="MsoNormal"><span style="color:#888888"><br><br clear="all"><br>-- <u></u><u></u></span></p><div><p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:#888888">Jordi Torres<br><br><u></u><u></u></span></p>
</div></div></div><p class="MsoNormal"><br><br clear="all"><u></u><u></u></p></div></div><p class="MsoNormal"><span><span style="color:#888888">-- <u></u><u></u></span></span></p><div><p class="MsoNormal" style="margin-bottom:12.0pt">
<span style="color:#888888">Jordi Torres<br><br></span><u></u><u></u></p></div></div></div></div><p class="MsoNormal"><br><br clear="all"><br>-- <u></u><u></u></p><div><p class="MsoNormal" style="margin-bottom:12.0pt">Jordi Torres<br>
<br><u></u><u></u></p></div></div></div></div></div></div><br>_______________________________________________<br>
Qgis-developer mailing list<br>
<a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr">Jordi Torres<br><br><br></div>
</div>