因此,我查看了您的站点,并在您的div中找到了json映射样式#map-styles
.
然而,您的json并不十分有效。不确定从何处复制样式源,或者acf是否正在处理输出。
我清理了你的json样式,因此它是有效的,see validated version here.
因此,关于将其集成到maps.js
, 选项style
不存在,需要修改mapTypeControlOptions
将您的风格注册为mapTypeId
See google mapTypeControlOptions
docs here.
以下是我添加到您当前脚本中的内容,以使其正常工作。请注意,除非从acf字段中确保json有效,否则这不会起作用。
// map args
var mapArgs = {
zoom: $el.data("zoom") || 16,
mapTypeControlOptions: {
mapTypeIds: [
\'custom_map_style\',
google.maps.MapTypeId.ROADMAP,
google.maps.MapTypeId.SATELLITE
],
style: google.maps.MapTypeControlStyle.HORIZONTAL
}
};
// set our map
var map = new google.maps.Map($el[0], mapArgs);
// get our json from #map-sytles div
var customStyle = JSON.parse($(\'#map-styles\').text());
// create the custom styled map type object
var customStyleMap = new google.maps.StyledMapType(customStyle, {
name: \'Custom Style\'
});
// set the custom styled map type against the map
map.mapTypes.set(\'custom_map_style\', customStyleMap);
map.setMapTypeId(\'custom_map_style\');
您会注意到,我在中添加了自定义样式贴图作为另一个选项
mapTypeIds
.
您可以删除默认值google.maps.MapTypeId.ROADMAP
或google.maps.MapTypeId.SATELLITE
或者两者都有。。。从…起mapTypeIds
. 在我看来,保留卫星选项总是很好的。
这里是一个JSFIDLE上的工作演示,使用您的站点代码和上述tweek。
https://jsfiddle.net/joshmoto/qcL7v9p6/
更简洁的方法是将json输出到数据属性中,而不是输出到隐藏的div中。
<div class="acf-map" data-zoom="19" data-style="{{ options.map_styles }}">
以这种方式获取json
$el.data(\'style\');
希望这能让你走上正轨。