Renaud, there are a couple of ways to do this:
- Query QGIS's interface to find and trigger the appropriate menu
action.
- Work directly with the already-loaded OpenLayers plugin.
Solution #1 is pretty straightforward. OpenLayers plugin offers a good solution to #2, which will help you understand working with other plugins as well. Here is how both are accomplished.
Trigger OpenLayers plugin menu action
layeract = 'Google Physical'
plugmenu = qgis.utils.iface.pluginMenu()
olmenu = False
for act in plugmenu.actions():
if 'OpenLayers' in act.text():
olmenu = act
break
if olmenu:
for act in olmenu.menu().actions():
if layeract in act.text():
act.trigger()
Work directly with OpenLayers plugin
try:
olplugin = qgis.utils.plugins['openlayers']
ol_gphyslayertype = olplugin.olLayerTypeRegistry.getById(0)
olplugin.addLayer(ol_gphyslayertype)
except KeyError:
print 'OpenLayers plugin not loaded.'
This latter solution probably needs a little more explaining.
-> olplugin = qgis.utils.plugins['openlayers']
Get the OpenLayers plugin instance from qgis.utils's plugin registry.
-> ol_gphyslayertype = olplugin.olLayerTypeRegistry.getById(0)
Get the 'Google Physical' layer type object from OpenLayers's layer type registry. Open [path-to-user-plugins]/openlayers/openlayers_plugin.py and starting at line #111 you will see the order the layer types are assigned to the registry. They are given IDs starting with 0 (see rest of module for how that's done).
-> olplugin.addLayer(ol_gphyslayertype)
Loads the layer into QGIS's map canvas.
There may be other solutions as well, but those are the basics that I could find.
You have to write the url that points to the csv as such:
uri = "file:///f:/scripts/map/points.csv?delimiter=%s&xField=%s&yField=%s" % (",", "longitude", "latitude")
Best Answer
You'll want to use a QgsMapLayerComboBox. If you're just after quick and dirty, you can show the combobox alone in a window using:
Then, you can retrieve the selected layer with:
You can also filter the displayed layers by calling something like
and use the options shown here