?? Thanks http://cecilialiao.com/2014/10/30/adding-additional-stamen-map-tiles-to-qgis-2-4-tutorial/
I、 Install QGIS
visit Official Site download
II、 Install Openlayers Plugin
under Plugins menu, click Manage and Install Plugins

Manage and Install Plugins p1

Manage and Install Plugins p2

Manage and Install Plugins p3
III、Custom Basemap

Manage and Install Plugins p3
Setp1 edit osm_stamen.py
open folder .qgis2
in your pc. Windows: C:\Users\(computer name)\.qgis2
if you used default installation;
Mac OS X: ~/.qgis2
open .qgis2
edit python/plugins/openlayers_plugin/weblayers/osm_stamen.py
in last line add.
class OlOSMAutoNavLayer(OlOSMStamenLayer):
def __init__(self):
OlOSMStamenLayer.__init__(self, name='AutoNav/OSM', html='autonav.html')
Step2 define new html for custom basemap
In python/plugins/openlayers_plugin/weblayers/html/
copy stamen_toner.html
as autonav.html
and edit following part
var apple = new OpenLayers.Layer.XYZ(
"AutoNav/OSM map",
"http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x=${x}&y=${y}&z=${z}",
{
sphericalMercator: true,
wrapDateLine: true,
// TODO: min zoom level 2
numZoomLevels: 20,
// attribution: "", // FIXME: attribution
eventListeners: {
"loadstart": layerLoadStart,
"loadend": layerLoadEnd
}
}
);
??Reminder: ${x} ${y} ${z} NOT {x} {y} {z}
Step3 link new map to open layers plugin
edit python/plugins/openlayers_plugin/openlayers_plugin.py
Find following
from weblayers.osm_stamen import OlOSMStamenTonerLayer, OlOSMStamenWatercolorLayer, OlOSMStamenTerrainLayer
Update to
from weblayers.osm_stamen import OlOSMStamenTonerLayer, OlOSMStamenWatercolorLayer, OlOSMStamenTerrainLayer, OlOSMAutoNavLayer
Find
self._olLayerTypeRegistry.register(OlOSMStamenTerrainLayer())
In next line add
self._olLayerTypeRegistry.register(OlOSMAutoNavLayer())
Step4 Check It works
Screen Shot 2015-09-10 at 10.04.23.png