如何将Google地图置于屏幕中央?

时间:2013-10-06 08:17:38

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

我有一个基于Google地图的网站(使用gmap3),其上面有标记和浮动小部件,其中包含有关活动标记的文本。这个浮动小部件占用了大约一半的屏幕。地图会自动居中(或平移)到活动标记。

从上面可以看出,屏幕中央的活动标记非常靠近文本小部件的右侧(几乎覆盖了屏幕的所有左侧)。我想让它更松散 - 比如说,不是在屏幕的中心,而是左边的2/3和右边的1/3(当然是水平的;垂直的,它应该保持居中)。

换句话说,我想要以下内容:当一个新标记被选择为活动时,地图应该平移到这样的位置,该标记位于屏幕右侧屏幕宽度的大约1/3处。

更改地图中心的latlng将无济于事,因为这应该适用于任何缩放级别。我需要像“panTo(宽度:66%;高度:50%)”这样的东西(当然这不是真正的代码)。

提前谢谢。

(       function($){
    var $et_main_map = $( '#et_main_map' );

    et_active_marker = null;

    $et_main_map.gmap3({
        map:{
            options:{
<?php
while ( have_posts() ) : the_post();
$et_location_lat = get_post_meta( get_the_ID(), '_et_listing_lat', true );
$et_location_lng = get_post_meta( get_the_ID(), '_et_listing_lng', true );

            if ( '' != $et_location_lat && '' != $et_location_lng )
                printf( 'center: [%s, %s],', $et_location_lat, $et_location_lng );

break;
endwhile;
rewind_posts();
?>

                            zoom: <?php
                        if ( is_home() || is_front_page() )
                            echo esc_js( et_get_option( 'explorable_homepage_zoom_level', 3 ) );
                        else
                            echo esc_js( et_get_option( 'explorable_default_zoom_level', 5 ) ); ?>,
                mapTypeId: google.maps.MapTypeId.<?php echo esc_js( strtoupper( et_get_option( 'explorable_map_type', 'Roadmap' ) ) ); ?>,
                mapTypeControl: false,
                mapTypeControlOptions: {
                    position : google.maps.ControlPosition.LEFT_CENTER,
                    style : google.maps.MapTypeControlStyle.DROPDOWN_MENU
                },
                streetViewControlOptions: {
                    position: google.maps.ControlPosition.LEFT_CENTER
                },
                navigationControl: true,
                scrollwheel: false,
                streetViewControl: false,
                zoomControl: true,
                                    zoomControlOptions: {
                    position: google.maps.ControlPosition.RIGHT_BOTTOM,
                                            style: google.maps.ZoomControlStyle.SMALL
                },
            }
        }
    });

1 个答案:

答案 0 :(得分:2)

您可以先将地图置于给定的LatLng中心,然后使用panBy()应用偏移量:

 map.panBy(-Math.floor(map.getDiv().offsetWidth/6),0)

对于gmap3,您可以使用map-option的event-property来应用它: 添加以下代码

        events:{
        idle:function(map){
            google.maps.event.clearListeners(map,'idle');
            map.panBy(-parseInt(this.width()/6),0);
         }
      },

之后

$et_main_map.gmap3({
        map:{