我有一个基于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
},
}
}
});
答案 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:{