您好我有一个网络应用程序,我在其上集成gmap,它看起来类似于Yelp gmap服务。问题在于,当我将鼠标悬停在标记上时,信息框卡在框中,如下所示:
信息框假设看起来像这样
以下是我目前的集成gmap代码
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox_packed.js"></script>
<script type="text/javascript">
var gmap, gpoints = [];
$(document).ready(function() {
initialize();
});
function initialize() {
gmap = new google.maps.Map(document.getElementById('themap'), {
zoom: 8,
streetViewControl: false,
scaleControl: false,
center: new google.maps.LatLng(3.3000000,101.9629796),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
<?php
$content = '<p>Test</p>';
?>
gpoints.push( new point(gmap, '<?php echo $lat; ?>', '<?php echo $long; ?>', '<?php echo $content; ?>') );
}
function point(_map, lat, lng, content) {
this.marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lng),
map: _map,
zIndex: 11
});
this.content = content;
var gpoint = this;
google.maps.event.addListener(gpoint.marker, 'mouseover', function() {
popup(gpoint);
});
google.maps.event.addListener(_map, 'zoom_changed', function() {
center=gpoint.marker.getPosition();
lat=center.lat();
lng=center.lng();
// alert(lat+"===="+lng);
});
}
function popup(_point) {
_point.popup = new InfoBox({
content: _point.content,
position: _point.marker.getPosition(),
// shadowStyle: 1,
padding: 20,
//backgroundColor: '#ddd',
borderRadius: 10,
arrowSize: 10,
borderWidth: 1,
// borderColor: '#dddddd',
disableAutoPan: true,
arrowPosition: 30,
// backgroundClassName: 'phoney',
arrowStyle: 2
});
_point.popup.open(_point.marker.map, _point.marker);
google.maps.event.addListener(_point.popup, 'domready', function() {
google.maps.event.addDomListener(_point.marker, 'mouseout', function() {
_point.popup.close();
});
});
}
</script>
答案 0 :(得分:0)
您可以使用infoBox的pixelOffset
选项来控制与标记相关的位置。
默认值为0,0,这意味着infoBox的左上角粘贴在(标记的)位置上。
要将其置于顶部+中心,您必须明确指定信息框的内容,并按如下方式应用pixelOffset:
pixelOffset:new google.maps.Size(-halfOfWidthOfTheBox,0)
当您不知道infoBox的大小时,您可以计算它。
将其添加到domready
- _point.popup
的回调:
this.setOptions({pixelOffset:new google.maps
.Size(-parseInt(this.div_.offsetWidth/2,10),0)});