gpt4 book ai didi

javascript - 如何在 Google Maps JS API v3 中自定义 mapTypes 按钮的显示

转载 作者:太空宇宙 更新时间:2023-11-04 14:54:29 25 4
gpt4 key购买 nike

我想自定义处理 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_buttonmap_type_button_bordermap_type_button_interior 类添加一些 css。

希望这会有所帮助。

关于javascript - 如何在 Google Maps JS API v3 中自定义 mapTypes 按钮的显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com