The BasemapToggle can only use basemaps from arcgis.com. I'll get the text on the page you referenced updated, it shouldn't say you can use your own custom basemaps. I apologize for the mistake.
It is possible to use custom maps with the basemap toggle, but it takes a little work. First, load the default API config object and put info for your basemaps on esriConfig.defaults.map.basemaps:
require([
"esri/map",
"esri/dijit/BasemapToggle",
"esri/config",
"dojo/domReady!"
], function(
Map, BasemapToggle, esriConfig
) {
console.log(esriConfig.defaults.map.basemaps);
esriConfig.defaults.map.basemaps.delorme = {
baseMapLayers: [
{ url: "http://services.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer" }
],
title: "Delorme"
};
Then specify both basemap and basemaps when you create the toggle:
toggle = new BasemapToggle({
map: map,
basemap: "delorme",
basemaps: {
delorme: {
label: "delorme",
url: "http://www.delorme.com/images/homepage/dbm_icon.jpg"
}, topo: {
label: "topo",
url: "http://js.arcgis.com/3.7/js/esri/dijit/images/basemaps/topo.jpg"
}
}
}, "BasemapToggle");
toggle.startup();
Working page on jsbin: http://jsbin.com/iFakeLa/1
Your points disappeared because you not specify Spatial Reference at last step adding csv to the map.
Your csv data are in WGS84 and base map (i.e. Google or Bing is in Web Mercator). Also you need to enable reproject on the fly.
Best Answer
No plugin required
There is a core functionality XYZ Tile Server provider which was implemented with some other nice UX enhancements for tiled services (available since QGIS 2.18). This means, that there is no need for an external plugin although for an easy setup you can still use external plugins (see bottom of this post) and it offers various improvements over pure plugin based solutions.
In the browser panel, locate the Tile Server entry and right click it to add a new service.
Enter the URL of the service which you would like to use, replacing x, y and z parts with curly brackets substitution as can be seen below.
Double Click the newly created entry to add the layer to the map.
Layers added this way:
Some example URLs
OpenTopoMap
(See comment below for attribution)
OpenStreetMap
Google Hybrid
Google Satellite
Google Road
(Codes for other tile types from Google found here)
Bing Aerial
Configuration GUI
Since version 0.18.7 and in combination with QGIS >= 2.18.8 it's possible to use QuickMapServices as a very easy to use tool for configuring layers. Just check the "Use native renderer" checkbox (thanks @DmitryBaryshnikov)