google-maps - 如何使 Google map 居中而不位于屏幕中心?

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

我有一个基于 Google map (使用 gmap3)的网站,该网站有标记和其上方的 float 小部件,其中包含有关事件标记的文本。这个 float 小部件大约占据屏幕的一半。 map 自动居中(或平移至)事件标记。

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

换句话说,我想要以下内容:当选择新标记为事件标记时, map 应平移到该位置,即该标记距屏幕右侧约 1/3 的屏幕宽度。

更改 map 中心的纬度不会有帮助,因为这应该适用于任何缩放级别。我需要类似“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
                },
            }
        }
    });

最佳答案

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

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

对于 gmap3,您可以使用 map 选项的事件属性来应用它: 添加以下代码

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

紧接着

$et_main_map.gmap3({
        map:{

关于google-maps - 如何使 Google map 居中而不位于屏幕中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206807/

相关文章:

android - 如何为结果启动谷歌地图

javascript - Google map 中的 ionic 2 动态标记以及个人资料图片

c# - 像 map 一样的谷歌地图

css - 自定义谷歌地图标记图标

android - 将 URL 中的图像加载到 Google map 中

javascript - 从图像中获取像素颜色总是 0 0 0 0?

google-maps - 标记拖动点击事件谷歌地图

javascript - 如何在谷歌地图中找到最近的坐标

jquery - 如何将 ID 参数传递到上下文菜单

php - Gmap3 谷歌地图使用地理编码位置使 map 居中