映射边界的当前标记距离

时间:2012-07-28 16:14:06

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

我需要标记和地图边界之间的当前距离来决定:在标记的左侧,右侧,上方或下方绘制标题框。

我用这些代码行设置了tipbox的位置:

Label.prototype.draw = function() {
  var projection = this.getProjection();
  var position = projection.fromLatLngToDivPixel(this.get('position'));

  // position of tipbox, depends on margin to map boaunds
  var div = this.div_;
  var mapWidth = parseInt($('#mapBox').css('width'));
  var mapHeight = parseInt($('#mapBox').css('height'));

  div.style.left = (position.x-(parseInt(div.style.width)/2)) + 'px';
  div.style.top = position.y + 'px';      
  div.style.display = 'inline';

  $('.tipBox-inner').html(''+position.x);
};  

但是如果我拖动页面,position.x或position.y返回相同数量的像素。如图所示,x位置为300px(!)。如果标记位于页面底部,我会将标题框绘制在标记的顶部,依此类推。

enter image description here

1 个答案:

答案 0 :(得分:1)

好的,我自己找到了一个解决方案。我在标记的鼠标悬停事件中得到距离(px):

google.maps.event.addListener(marker, 'mouseover', function(event) {    
  label = new Label({
    map: map
  });

  label.bindTo('position', marker, 'position');

  var pixel = label.getProjection().fromLatLngToContainerPixel(event.latLng);

  label.set('mouseX', pixel.x);
  label.set('mouseY', pixel.y);
});

现在我可以在带有this.get('mouseX')的标签的draw-functionf中使用mouseX和mouseY