我有一个基于 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/