【问题标题】:Google Map API V3 events mousedown, mousemove and mouseupGoogle Map API V3 事件 mousedown、mousemove 和 mouseup
【发布时间】:2013-07-08 08:03:41
【问题描述】:

我试图在谷歌地图中模仿谷歌地球的桌面版绘图路径。我所做的是,当我尝试绘制路径时,我禁用了默认地图的可拖动事件并附加了一个 mousedown 事件。在 mousedown 事件之后,mousemove 事件被触发并相应地工作。当鼠标释放事件被捕获在 mouseup 处理程序中,其中 mousemove 处理程序在 mouseup 事件侦听器中被删除。但是,这在第二次 mousedown 和 mouseup 事件之后无法正常工作。

我的代码是:

var map = 'Already created map object';
var polyOptions = {
                    strokeColor: '#000000',
                    strokeOpacity: 1.0,
                    strokeWeight: 2,
                    map: map,
                    idx: 0
                };
var mouseMoveHandler = null;
google.maps.event.addListener(map, 'mousedown', function(e) {
  mouseMoveHandler = google.maps.event.addListener(map, 'mousemove', function(e) {
  // Create a new polyline instance if it does not exists
  if ("undefined" == typeof(GMap._poly[GMap._active_overlay])) {
    GMap._poly[GMap._active_overlay] = new google.maps.Polyline(polyOptions);
  }
  var path = GMap._poly[GMap._active_overlay].getPath();
  path.push(e.latLng);
  }); // End of mousemove lister
  return false;
});

google.maps.event.addListener(map, 'mouseup', function(e) {
  google.maps.event.removeListener(mouseMoveHandler);
});

【问题讨论】:

    标签: google-maps google-maps-api-3


    【解决方案1】:

    将此添加到 polyOptions:

    clickable:false
    

    如果不这样做,多边形将侦听鼠标事件,并且 mouseup-event 将在多边形而不是地图上触发。

    【讨论】:

      【解决方案2】:

      带有引导工具提示的示例:

          google.maps.event.addListener(poly,"mousemove",function(e){
      
              var _tooltipPolys = $("#tooltipPolys");
              if(_tooltipPolys.length == 0) {
                  _tooltipPolys = $(' \
                      <div id="tooltipPolys" class="tooltip top" role="tooltip"> \
                          <div class="tooltip-arrow"></div> \
                          <div class="tooltip-inner"></div> \
                      </div> \
                  ');
                  $("body").append(_tooltipPolys);
                  $("div.tooltip-inner", _tooltipPolys).text(this.title);
                  _tooltipPolys.css({
                      "opacity": ".9",
                      "position":"absolute"
                  });
              }
      
              var pageX = event.pageX;
              var pageY = event.pageY;
              if (pageX === undefined) {
                  pageX = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
                  pageY = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
              }
      

      【讨论】:

        猜你喜欢
        • 2013-07-02
        • 1970-01-01
        • 1970-01-01
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-16
        • 1970-01-01
        相关资源
        最近更新 更多