I came across a great tutorial about how to add a styled Google map layer to the QGIS OpenLayers plugin (http://gistncase.blogspot.com/2014/02/how-to-add-google-maps-styled-layer-in.html).
However, it appears that some changes have been implemented on the QGIS/OL side since this was posted and it no long works.
I have sorted out how to have openlayers_plugin.py find and list the new custom layer, but I am unable to get the layer html itself to function properly. (Likely due to my complete lack of experience on the html/java side).
QGIS: 2.10.1-Pisa
OpenLayers: 1.3.6
Tutorial example (that doesn't seem to be working):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OpenLayers Google Streets Layer</title>
<link rel="stylesheet" href="qgis.css" type="text/css">
<link rel="stylesheet" href="google.css" type="text/css">
<script src="http://maps.google.com/maps/api/js?v=3.3&sensor=false"></script>
<script src="OpenLayers.js"></script>
<script src="OlOverviewMarker.js"></script>
<script type="text/javascript">
var map;
var loadEnd;
var oloMarker; // OpenLayer Overview Marker
function init() {
map = new OpenLayers.Map('map', {
theme: null,
controls: [],
units: "m",
maxResolution: 156543.0339,
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
});
var stylez = [ { featureType: "all", elementType: "all", stylers: [ { visibility: "simplified" } ] } ];
var styledMapType = new google.maps.StyledMapType(stylez, styledMapOptions);
var gmap = new OpenLayers.Layer.Google(
"Google Custom",
{ type: 'styled' }
);
map.addLayer(gmap);
gmap.mapObject.mapTypes.set('styled', styledMapType);
gmap.mapObject.setMapTypeId('styled');
loadEnd = false;
map.events.register('movestart', map, function() {
loadEnd = false;
});
google.maps.event.addListener(gmap.mapObject, "tilesloaded", function() {
// wait for tiles to fade in completely
setTimeout(function() {
loadEnd = true;
},
200);
});
map.setCenter(new OpenLayers.LonLat(0, 0), 2);
oloMarker = new OlOverviewMarker(map, getPathUpper(document.URL) + '/x.png');
}
</script>
</head>
<body onload="init()">
<div id="map"></div>
</body>
</html>