Gmap信息框弹出窗口

时间:2013-01-09 08:01:32

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

您好我有一个网络应用程序,我在其上集成gmap,它看起来类似于Yelp gmap服务。问题在于,当我将鼠标悬停在标记上时,信息框卡在框中,如下所示:

enter image description here

信息框假设看起来像这样

enter image description here

以下是我目前的集成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>

1 个答案:

答案 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)});