在同一页面上加载相同的 ACF 地图两次
Load Same ACF Map Twice on Same Page
我正在一个网站上工作:MetroCRE 并且正在尝试使用 Google 地图与高级自定义字段的集成。
地图现在可以使用了,但是由于特定的客户需求,他们希望它在移动设备上位于一个位置,并且在桌面上存在的选项卡选择中。
但是,无法在同一页面上两次加载 Google 地图字段。
在移动设备上,地图可以工作,或者调整浏览器的大小都可以加载,但在页面加载时不会 >= 768px
有谁知道有什么方法可以克服这个问题吗?
由于地图在调整大小后开始工作...
来自 ACF Website.
解决隐藏地图问题
如果在隐藏元素上初始化,Google 映射 API 将无法按预期工作。当元素显示时,地图将不会显示。使用弹出模式时最有可能出现这种情况。
要解决此问题,只需在地图元素可见后触发地图变量上的“resize”事件即可。
// popup is shown and map is not visible
google.maps.event.trigger(map, 'resize');
所以我会在您单击选项卡地图时添加一个事件来触发调整大小。把代码放到acf_google-map.js最后
$(document).ready(function(){
$('.acf-map').each(function(){
// create map
map = new_map( $(this) );
});
$('#map-tab').click(function () {
google.maps.event.trigger(map, 'resize');
});
});
编辑:
因为标签淡入有动画所以延迟调整大小触发器
$('#map-tab').click(function () {
setTimeout(function() {
google.maps.event.trigger(map, 'resize');
}, 200);
});
虽然这不是解决问题的最佳方法,但我找到了解决问题的方法 here。
事实证明添加一些 CSS 来呈现两个选项卡,但将它们从页面上移开会导致它工作,因为 google.maps.event.trigger(map, 'resize');
不会在选项卡激活时工作。
下面是 CSS 我用来让它工作的。适用于响应式。
.tab-pane { display: block !important; position: fixed; right: -9999px; width: 100%; }
.tab-pane.active { position: relative; left: 0; }
如果有人有非 CSS 的解决方案,请告诉我,因为 TheDrot 的上述回答对我不起作用。
我正在一个网站上工作:MetroCRE 并且正在尝试使用 Google 地图与高级自定义字段的集成。
地图现在可以使用了,但是由于特定的客户需求,他们希望它在移动设备上位于一个位置,并且在桌面上存在的选项卡选择中。
但是,无法在同一页面上两次加载 Google 地图字段。
在移动设备上,地图可以工作,或者调整浏览器的大小都可以加载,但在页面加载时不会 >= 768px
有谁知道有什么方法可以克服这个问题吗?
由于地图在调整大小后开始工作...
来自 ACF Website.
解决隐藏地图问题
如果在隐藏元素上初始化,Google 映射 API 将无法按预期工作。当元素显示时,地图将不会显示。使用弹出模式时最有可能出现这种情况。
要解决此问题,只需在地图元素可见后触发地图变量上的“resize”事件即可。
// popup is shown and map is not visible
google.maps.event.trigger(map, 'resize');
所以我会在您单击选项卡地图时添加一个事件来触发调整大小。把代码放到acf_google-map.js最后
$(document).ready(function(){
$('.acf-map').each(function(){
// create map
map = new_map( $(this) );
});
$('#map-tab').click(function () {
google.maps.event.trigger(map, 'resize');
});
});
编辑:
因为标签淡入有动画所以延迟调整大小触发器
$('#map-tab').click(function () {
setTimeout(function() {
google.maps.event.trigger(map, 'resize');
}, 200);
});
虽然这不是解决问题的最佳方法,但我找到了解决问题的方法 here。
事实证明添加一些 CSS 来呈现两个选项卡,但将它们从页面上移开会导致它工作,因为 google.maps.event.trigger(map, 'resize');
不会在选项卡激活时工作。
下面是 CSS 我用来让它工作的。适用于响应式。
.tab-pane { display: block !important; position: fixed; right: -9999px; width: 100%; }
.tab-pane.active { position: relative; left: 0; }
如果有人有非 CSS 的解决方案,请告诉我,因为 TheDrot 的上述回答对我不起作用。