作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在(最初隐藏的)选项卡中使用 Google map , map 是根据 Wordpress 高级自定义字段插件提供的示例代码生成的。
我的 map 打开时缺少图 block 。我知道这是因为该选项卡最初是隐藏的,并且有各种使用 google.maps.event.trigger(map, "resize")
的解决方案但是对于我来说我无法得到这个工作。
这是我发现的带有基本修正的 acf 代码,但仍然无法正常工作:
(function($) {
var map;
function render_map( $el ) {
var $markers = $el.find(".marker");
var args = {
zoom : 16,
center : new google.maps.LatLng(0, 0),
mapTypeId : google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map( $el[0], args);
map.markers = [];
$markers.each(function(){
add_marker( $(this), map );
});
center_map( map );
}
function add_marker( $marker, map ) {
var latlng = new google.maps.LatLng( $marker.attr("data-lat"), $marker.attr("data-lng") );
var marker = new google.maps.Marker({
position : latlng,
map : map
});
map.markers.push( marker );
if( $marker.html() )
{
var infowindow = new google.maps.InfoWindow({
content : $marker.html()
});
google.maps.event.addListener(marker, "click", function() {
infowindow.open( map, marker );
});
}
}
function center_map( map ) {
var bounds = new google.maps.LatLngBounds();
$.each( map.markers, function( i, marker ){
var latlng = new google.maps.LatLng( marker.position.lat(), marker.position.lng() );
bounds.extend( latlng );
});
if( map.markers.length == 1 )
{
map.setCenter( bounds.getCenter() );
map.setZoom( 16 );
}
else
{
map.fitBounds( bounds );
}
}
$(document).ready(function(){
$(".acf-map").each(function(){
render_map( $(this) );
});
});
$(document).on("click", "#map-tab", function() {
alert("clicked");
google.maps.event.trigger(map, "resize");
map.setCenter( bounds.getCenter() );
map.setZoom( 16 );
});
})(jQuery);
谁能指出我做错了什么?非常感谢任何帮助
最佳答案
您需要在渲染 map 之后执行 fitBounds 操作(在显示并具有最终尺寸之后)。目前它是在 map 隐藏时完成的,因此它适合零尺寸 map 。请注意,如果您单击“提到的位置”选项卡两次,它会呈现图 block ,但中心仍位于左上角。
proof of concept example (显示/隐藏在显示 div 后执行 fitBounds,显示 1/隐藏 1 使用您的代码)
关于javascript - 谷歌地图调整大小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21413711/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!