Thanks for your useful comments:
I have created an example based on your comments and this code:
http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/f30e8dfad9cb2c9b
//----------------------------
The code converts the clicked point's coordinates, which is in pixels
to latlng. To do this a dummy overlay is created.
//----------------------------
Note that there is a bug. If the browser is both zoomed in and
scrolled the position will be wrong. The reason is that I could not
figure out a way to access to browser's zoom factor.If we had the zoom
factor we had to multiply it here:

 var relativeLeft = mEvent.clientX + window.scrollX*zoomfactor -
curElement.offsetLeft;
 var relativeTop = mEvent.clientY + window.scrollY*zoomfactor -
curElement.offsetTop;

Apparantly if the script is certified for firefox we can access the
zoom level (according to this page
http://forums.mozillazine.org/viewtopic.php?f=38&t=688405&start=0&st=0&sk=t&sd=a).
//----------------------------
I have pasted the code below:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;
charset=utf-8" />
    <title>Converting LatLng to Pixel Coordinates</title>

    <style type="text/css">
      #map {
        width: 600px;
        height: 600px;
      }

      #latlng-control {
        background: #ffc;
        border: 1px solid #676767;
        font-family: arial, helvetica, sans-serif;
        font-size: 0.7em;
        padding: 2px 4px;
        position: absolute;
      }
    </style>

    <script type="text/javascript" src="http://maps.google.com/maps/
api/js?sensor=false"></script>

    <script type="text/javascript">

      /**
       * Called on the intiial pageload.
       */
      function init() {
        var centerLatLng = new
google.maps.LatLng(37.748582,-122.418411);
        var mapDIV = document.getElementById('map');
        var map = new google.maps.Map(document.getElementById('map'),
{
          'zoom': 10,
          'center': centerLatLng,
          'mapTypeId': google.maps.MapTypeId.ROADMAP
        });

        // Register event listeners
        var dummyOverlay = new ProjectionHelperOverlay(map);


        google.maps.event.addDomListener(mapDIV, 'mousedown',
function(mEvent) {
            //only handle left mouse button
            if (mEvent.button != 0) return;


            var curElement = mapDIV;
            var relativeLeft = mEvent.clientX + window.scrollX -
curElement.offsetLeft;
            var relativeTop = mEvent.clientY + window.scrollY -
curElement.offsetTop;


            while ( curElement.offsetParent.tagName!="BODY" ) {
                curElement = curElement.parentNode;
                relativeLeft = relativeLeft - curElement.offsetLeft ;
                relativeTop = relativeTop - curElement.offseTop ;
            }
        var projection = dummyOverlay.getProjection();
        var point = new google.maps.Point(relativeLeft,relativeTop);
        var latLng = projection.fromContainerPixelToLatLng(point);

        var marker = new google.maps.Marker({
            position: latLng,
            map: map,
            });
        });
      }


    function ProjectionHelperOverlay(map) {
        this.setMap(map);
    }

    ProjectionHelperOverlay.prototype = new google.maps.OverlayView();
    ProjectionHelperOverlay.prototype.draw = function () {
        if (!this.ready) {
            this.ready = true;
            google.maps.event.trigger(this, 'ready');
        }
    };

    google.maps.event.addDomListener(window, 'load', init);
    </script>
  </head>
  <body>
    <center>
    <h2>Handle mouse down and mouse up event on a map div and
calculate the position of the mouse</h2>

    <table style='background-color:gray; width:650px; height:650px;'>
        <tr>
            <td>
                <center>
                    <div id="map"></div>
                </center>
            </td>
        </tr>
    </table>
    </center>
  </body>
</html>



On May 14, 2:27 pm, Ben Appleton <[email protected]> wrote:
> You can listen for 'mousedown' / 'mouseup' DOM events on the map div, like
>   google.maps.event.addDomListener(yourMapDiv, 'mousedown', alert);
> Does that suffice?
>
> - Ben
>
>
>
>
>
> On Fri, May 14, 2010 at 1:23 PM, Rossko <[email protected]> wrote:
> > > Thanks for your reply. The mouseup and mousedown events are not fired
> > > for the map object
>
> > There are no documented map events 'mousedown' or 'mouseup'
> >http://code.google.com/apis/maps/documentation/v3/reference.html#Map
>
> > --
> > 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]<google-maps-js-api-v3%2B 
> > [email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-maps-js-api-v3?hl=en.
>
> --
> 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 
> athttp://groups.google.com/group/google-maps-js-api-v3?hl=en.

-- 
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