从鼠标位置获取地图纬度经度

bot*_*bot 10 javascript google-maps geolocation

我试图将谷歌地图上的鼠标位置转换为LatLng对象.我看到很多关于通过谷歌地图"点击"事件等获得该位置的帖子,如下所示:

google.maps.event.addListener(map, 'click', function(event) {
  mouseLocation = event.latLng;
});
Run Code Online (Sandbox Code Playgroud)

但是,这对我的目的不起作用,因为我没有响应地图事件,我正在响应'tapHold'事件.在tapHold事件中,我想获得当前鼠标位置的纬度和经度.实际上我可以看到这样的函数在很多方面都有用,而不仅仅是tapHold事件.

我可以想到一些黑客,比如,在飞行中创建一个鼠标悬停事件,然后只让它触发一次并在从rollover事件中获取LatLng对象后将其删除,但是,对我来说似乎有些蠢... ...寻找更多优雅的解决方 谢谢!

bic*_*cle 16

google.maps.event.addListener(map, 'mousemove', function (event) {
              displayCoordinates(event.latLng);               
          });

function displayCoordinates(pnt) {

          var lat = pnt.lat();
          lat = lat.toFixed(4);
          var lng = pnt.lng();
          lng = lng.toFixed(4);
          console.log("Latitude: " + lat + "  Longitude: " + lng);
      }
Run Code Online (Sandbox Code Playgroud)

资料来源:http://seydahatipoglu.wordpress.com/2012/10/21/how-to-display-cursor-coordinates-in-google-map-javascript/


Nil*_*ils 14

有几种处理像素的功能,要使用它们,首先需要访问投影.

来自地图对象

map.getProjection().fromPointToLatLng(new google.maps.Point(x, y))
Run Code Online (Sandbox Code Playgroud)

从叠加对象:

overlay.getProjection().fromContainerPixelToLatLng(new google.maps.Point(x, y));
Run Code Online (Sandbox Code Playgroud)

您也可以使用虚拟叠加层执行此操作:

var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);
Run Code Online (Sandbox Code Playgroud)

以下是对文档的引用:https://developers.google.com/maps/documentation/javascript/reference#Projection