It seems like the emulator failed to report its location accurately.
Upon further investigation, I discovered that the gray screen issue was caused by not handling timeouts properly. When trying to retrieve the user's location, it could potentially take a long time before the browser returns the data. The best approach would be to initially set a default location and update the maps once the actual location is obtained. It's also important to set a timeout for geolocation, as by default it is set to Infinity. You can find more information on setting timeouts here.
I have created a jsfiddle demonstration for this scenario.
http://jsfiddle.net/x1115zw3/1/
=-=-=-=
To switch the map to HYBRID view, you need to include
mapTypeId: google.maps.MapTypeId.HYBRID
in the map options. Your mapOptions should appear as follows:
var mapOptions = {
zoom: 14,
mapTypeId: google.maps.MapTypeId.HYBRID
};