我想自定义处理 mapTypes 变化的按钮的显示(默认情况下为 Canvas 的 TOP_RIGHT
)。
除了 MapTypeControlStyle
对象,我还没有找到任何 mapTypes 自定义函数,但它非常有限。我想控制按钮的视觉样式。
此外,按按钮生成的 div
元素不包含 ID 或其他内容以正确获取它们:
<div draggable="false" style="direction: ltr; overflow: hidden; text-align: center; position: relative; color: rgb(0, 0, 0); font-family: Arial, sans-serif; -webkit-user-select: none; font-size: 13px; background-color: rgb(255, 255, 255); padding: 1px 6px; border: 1px solid rgb(113, 123, 135); -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px; box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px; font-weight: bold; min-width: 63px; background-position: initial initial; background-repeat: initial initial;">The map type</div>
有什么想法吗?
在网络上搜索了几次之后,我没有发现任何关于深度自定义默认 map 类型 google api 按钮的信息。
所以这是一种从头开始重新创建它们并通过 css 自定义它们的方法。
首先,禁用默认按钮:
map.setOptions({disableDefaultUI: true});
然后,您可以创建一个对象来处理自定义按钮的管理:
function DrawMapTypeControl(map, mapTypeName, controlPos) {
// Set div & css for the mapType button
var controlDiv = document.createElement('div');
controlDiv.className = 'map_type_button';
controlDiv.index = 1;
map.controls[controlPos].push(controlDiv);
// Set div & css for the control border.
var controlUI = document.createElement('div');
controlDiv.className = 'map_type_button_border';
controlDiv.appendChild(controlUI);
// Set div & css for the control interior.
var controlText = document.createElement('div');
controlDiv.className = 'map_type_button_interior';
controlText.innerHTML = '<strong>' + mapTypeName + '</strong>';
controlUI.appendChild(controlText);
// Setup the click event listener: simply set the map type.
google.maps.event.addDomListener(controlUI, 'click', function() {
map.setMapTypeId(mapTypeName);
});
}
其中 mapTypeName
是 map 类型 ID(例如 google.maps.MapTypeId.ROADMAP),controlPos
是按钮在 map Canvas 上的位置(例如google.maps.ControlPosition.TOP_RIGHT 为默认值)。
最后,只需在initialize
函数中调用按钮的创建即可:
var roadmapButton = new DrawMapTypeControl(map,
google.maps.MapTypeId.ROADMAP,
google.maps.ControlPosition.TOP_RIGHT);
这是新的自定义按钮,您只需为 map_type_button
、map_type_button_border
和 map_type_button_interior
类添加一些 css。
希望这会有所帮助。
我是一名优秀的程序员,十分优秀!