All we need to create an interactive Google Map in the notebook is access to the individual tiles - and there is a relatively simple naming scheme for those tiles. I actually typed up a description of this naming scheme a few years ago and posted it here:
http://facstaff.unca.edu/mcmcclur/GoogleMaps/Projections/GoogleCoords.html
The examples on that page show the full blown URLs used by the GMap API, but you don't need the full URL to access the tiles. For example, I live in the tile shown here:
http://mt0.google.com/vt/x=277&y=403&z=10
The webpage above describes the basics of translating from lat/lng values to tile indices. We can implement this in Mathematica as follows.
{alng,blng} = First[{a,b} /. Solve[
{a*(-180)+b==0,a(180)+b==1},{a,b}]];
lngToIndex[lng_, zoom_] := Floor[(alng*lng+blng)2^zoom];
mercator[lat_] = Log[Abs[Sec[lat*Degree]+Tan[lat*Degree]]];
{alat,blat} = First[{a,b} /. Solve[{a*mercator[85.0511287798066]+b==0,
a*mercator[-85.0511287798066]+b==1},{a,b}]];
latToIndex[lat_, zoom_] := Floor[(alat*mercator[lat]+blat)2^zoom];
indicesToTileURL[x_Integer,y_Integer, zoom_Integer] :=
"http://mt0.google.com/vt/x="<>ToString[x]<>"&y="<>
ToString[y]<>"&z="<>ToString[zoom];
Now, suppose I'd like to compute the URL of a tile in my neighborhood.
{lat0,lng0} = CityData["Asheville", "Coordinates"];
x0=lngToIndex[lng0,10];
y0=latToIndex[lat0,10];
indicesToTileURL[x0,y0,10]
"http://mt0.google.com/vt/x=277&y=403&z=10"
We can put this all together to set up an interactive zoomer.
Manipulate[
With[{x0=lngToIndex[lng0,zoom],y0=latToIndex[lat0,zoom]},
Grid[{
{Import[indicesToTileURL[x0-1,y0-1,zoom]],
Import[indicesToTileURL[x0,y0-1,zoom]],
Import[indicesToTileURL[x0+1,y0-1,zoom]]},
{Import[indicesToTileURL[x0-1,y0,zoom]],
Import[indicesToTileURL[x0,y0,zoom]],
Import[indicesToTileURL[x0+1,y0,zoom]]},
{Import[indicesToTileURL[x0-1,y0+1,zoom]],
Import[indicesToTileURL[x0,y0+1,zoom]],
Import[indicesToTileURL[x0+1,y0+1,zoom]]}
}, Spacings -> {0,0}]
],{{zoom,11},Range[5,15]}]

This is really just proof of concept at this point. There's quite a lot more that could be done. You could use an EventHandler to allow dragging and panning and add other controls as well. You'd need some error handling to deal with scrolling out of range. You could also interface other map servers. WolframAlpha evidently interfaces Open Street Map:
http://www.wolframalpha.com/input/?i=map+of+asheville
Also, I checked the terms of use of the Google Maps API available here:
http://www.google.com/intl/en_us/help/terms_maps.html
I don't see anything that violates their terms of use but, then, I'm not a lawyer.
Looking a little closer at your question, I see that you are wanting specifically to include map generated by the GPXToGoogleMap package into a Mathematica notebook. The first step would be to grab the map settings, which could be done like so:
mapsrc = Import[
"http://facstaff.unca.edu/mcmcclur/GoogleMaps/index.js",
"Text"
];
info =StringSplit[mapsrc,
{"map.setCenter(new GLatLng(", "G_NORMAL_MAP"}][[2]];
info = StringReplace[info, ")" -> ""];
{lat0,lng0,initialZoom} = ToExpression[StringSplit[info, ", "]]
Of course, that applies quite specifically to maps generated by this package. Other maps are likely different. Furthermore, the main purpose of that package is to display paths, markers, and other data contained in a GPX file. Doable, but a fair amount of work.