我需要标记和地图边界之间的当前距离来决定:在标记的左侧,右侧,上方或下方绘制标题框。
我用这些代码行设置了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(!)。如果标记位于页面底部,我会将标题框绘制在标记的顶部,依此类推。
答案 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