Try moving all of this:
var maptiler = new google.maps.ImageMapType({
        getTileUrl: function(coord, zoom) {
              if ((zoom < mapMinZoom) || (zoom > mapMaxZoom)) {
            return "none.png";
          }
          var ymax = 1 << zoom;
          var y = ymax - coord.y -1;
          var tileBounds = new google.maps.LatLngBounds(
            overlay.getProjection().fromDivPixelToLatLng( new
google.maps.Point( (coord.x)*256, (coord.y+1)*256 ) , zoom ),
            overlay.getProjection().fromDivPixelToLatLng( new
google.maps.Point( (coord.x+1)*256, (coord.y)*256 ) , zoom )
          );
          if (mapBounds.intersects(tileBounds)) {
            return "" + zoom + "/" + coord.x + "/" +
(Math.pow(2,zoom)-
coord.y-1) + ".png";
          } else {
           return "none.png";
          }
       },
       tileSize: new google.maps.Size(256, 256),
       isPng: true
      });

into your initialize function.  I think I was right initially.  You
are using overlay.getProjection() here, but you don't initialize it as
an google.maps.OverlayView() object until your initialize() function,
which gets triggered after this code I believe.

On Nov 21, 1:40 pm, CroNiX <[email protected]> wrote:
> scratch that.  I hate reading code in these forums.
>
> On Nov 21, 1:38 pm, CroNiX <[email protected]> wrote:
>
> > Try changing your overlay declaration from
> > var overlay;
> > to
> > var overlay = new google.maps.OverlayView();
> > overlay.setMap(map);
> > overlay.draw = function () {
> >     if (!this.ready) {
> >         this.ready = true;
> >         google.maps.event.trigger(this, 'ready');
> >     }
>
> > };
>
> > On Nov 21, 7:27 am, so0ly <[email protected]> wrote:
>
> > > Hi,
>
> > > I'm trying to do an overlay on Google Maps. I have generated tiles of
> > > my image using maptiler, but the example generated by maptiler is in
> > > v2 and i want to use v3. The example generated by maptiler is also
> > > very complex and does some unnecessary opacity stuff. Now v3 of GM has
> > > changed a lot since v2 and i have some problems to generate the LatLng
> > > of a certain point on the screen. getProjection() keeps being
> > > undefined, whatever i do, any idea how to get the projection?
>
> > >     <script>
> > >       var mapBounds = new google.maps.LatLngBounds();
> > >       var mapMinZoom = 8;
> > >       var mapMaxZoom = 14;
> > >       var overlay;
>
> > >       var maptiler = new google.maps.ImageMapType({
> > >         getTileUrl: function(coord, zoom) {
> > >               if ((zoom < mapMinZoom) || (zoom > mapMaxZoom)) {
> > >             return "none.png";
> > >           }
> > >           var ymax = 1 << zoom;
> > >           var y = ymax - coord.y -1;
> > >           var tileBounds = new google.maps.LatLngBounds(
> > >             overlay.getProjection().fromDivPixelToLatLng( new
> > > google.maps.Point( (coord.x)*256, (coord.y+1)*256 ) , zoom ),
> > >             overlay.getProjection().fromDivPixelToLatLng( new
> > > google.maps.Point( (coord.x+1)*256, (coord.y)*256 ) , zoom )
> > >           );
> > >           if (mapBounds.intersects(tileBounds)) {
> > >             return "" + zoom + "/" + coord.x + "/" + (Math.pow(2,zoom)-
> > > coord.y-1) + ".png";
> > >           } else {
> > >            return "none.png";
> > >           }
> > >        },
> > >        tileSize: new google.maps.Size(256, 256),
> > >        isPng: true
> > >       });
>
> > >       var map;
> > >       function initialize() {
> > >         map = new
> > > google.maps.Map(document.getElementById("map_canvas"));
> > >         map.setZoom(11);
> > >         map.setMapTypeId('satellite');
> > >         mapBounds.extend(new google.maps.LatLng(50.9388615939,
> > > 3.80480816501));
> > >         mapBounds.extend(new google.maps.LatLng(51.4402541425,
> > > 4.73612507791));
> > >         map.fitBounds(mapBounds);
>
> > >         overlay = new google.maps.OverlayView();
> > >         overlay.draw = function() {};
> > >         overlay.setMap(map);
>
> > >         map.overlayMapTypes.insertAt(0, maptiler);
> > >       }
> > >     </script>
>
> > > the overlay part is a hack i found on the internet which supposed to
> > > get you to the projection. unfortunately it didn't work. Any idea's
> > > how to fix this? in V2 you could do something like this:
>
> > >     var mercator = new GMercatorProjection()
> > >     mercator.fromPixelToLatLng( new GPoint( (tile.x)*256, (tile.y
> > > +1)*256 ) , zoom )
>
> > > But this isn't possible anymore in v3.
>
> > > Anyone that can help?
>
> > > The example generated by maptiler can be found here:
>
> > >http://gmapsexample.staging1.kunstmaan.be/googlemapsv2.html
>
> > > This is a simple example in v3 which works:
>
> > >http://gmapsexample.staging1.kunstmaan.be/googlemapsv3_simple.html
>
> > > but i want everything except the map to be a specific color, so this
> > > is the example i'm trying to get working:
>
> > >http://gmapsexample.staging1.kunstmaan.be/googlemapsv3.html
>
> > > thanks,
>
> > > Daan
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps JavaScript API v3" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-maps-js-api-v3?hl=en.

Reply via email to