Google Maps V3:鼠标xy位置,用于自定义弹出窗口,单击标记,fromLatLngToContainerPixel

时间:2012-03-27 07:43:44

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

我想在点击标记时自己创建js弹出窗口。 因为我在API中没有发现任何相关内容,我只是 思维 得到鼠标的xy pos,而不是“画”我的div。

找到这个例子:

Get Position of Mouse Cursor on Mouseover of Google Maps V3 API Marker

但是当我做console.log(marker.getPosition())总是0,0。

任何人都有自己的自定义弹出窗口,并且可以给我一个提示怎么做 这个? Shoud我使用“fromLatLngToContainerPixel”或者是另一个 优雅的方式?

这里有一些代码。 _spots是一个json对象。

  for (var i = 0; i <= _spots.length; i++) {

      var myLatLng = new google.maps.LatLng(_spots[i].lat, _spots[i].long);
      var spotMarker = new google.maps.Marker({
          position: myLatLng,
          map: map, 
          title: _spots[i].name,
          animation: google.maps.Animation.DROP,
          icon: image,
          street: _spots[i].street,
          zipcode: _spots[i].zipcode,
          info: _spots[i].info,
      });

      markersArray.push(spotMarker);

        google.maps.event.addListener(spotMarker, 'click', function() {
            console.log(this);

            alert(spotMarker.getPosition());          // -> at this point I get 0,0
            var projection = overlay.getProjection(); 
            var pixel = projection.fromLatLngToContainerPixel(spotMarker.getPosition());
            console.log(pixel);

        });     
 }

祝你好运, SV

1 个答案:

答案 0 :(得分:0)

for (var i = 0; i <= _spots.length; i++)

这必须是:

for (var i = 0; i < _spots.length; i++) 

否则最后一个循环将指向非法偏移。

但是,您应该使用

alert(this.getPosition()); 

..访问点击的标记。

spotMarker将始终返回相同的标记(最后一个已创建的标记)