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.
