Javascript setIcon被称为google maps后无法设置Visible
我有两种侦听器方法:“缩放变换器”和“显示视口” 1) 缩放更改器侦听“缩放更改”事件,并根据缩放级别设置图标大小 2) show_viewport侦听“idle”事件并设置图标的可见性wrt地图的可见边界,因为我希望防止重载,并使平移和缩放更平滑 当我更改地图的缩放时出现问题。更改地图缩放后,“show_viewport”(显示视口)功能起作用,并在视口中隐藏一些图标,但当图标再次进入视口时无法设置为可见。当我禁用缩放变换器并使用具有原始大小的图标时,“显示视口”非常有效。提前谢谢Javascript setIcon被称为google maps后无法设置Visible,javascript,google-maps,Javascript,Google Maps,我有两种侦听器方法:“缩放变换器”和“显示视口” 1) 缩放更改器侦听“缩放更改”事件,并根据缩放级别设置图标大小 2) show_viewport侦听“idle”事件并设置图标的可见性wrt地图的可见边界,因为我希望防止重载,并使平移和缩放更平滑 当我更改地图的缩放时出现问题。更改地图缩放后,“show_viewport”(显示视口)功能起作用,并在视口中隐藏一些图标,但当图标再次进入视口时无法设置为可见。当我禁用缩放变换器并使用具有原始大小的图标时,“显示视口”非常有效。提前谢谢 googl
google.maps.event.addListener(map, 'zoom_changed', function () {
var zoom = map.getZoom();
var multiply;
var zoom_pix = {3: 8, 2: 4, 1: 2, 0: 2}
multiply = zoom_pix[Math.max(0, zoom - 17)]
if (zoom != previous_zoom) {
for (let i = 0; i < map.markers.length; i++) {
map.markers[i].setIcon({
url: String(map.markers[i].icon),
scaledSize: new google.maps.Size(multiply * 8, multiply * 8)
});
}
previous_zoom = zoom;
}});};
google.maps.event.addListener(映射'zoom\u changed',函数(){
var zoom=map.getZoom();
var乘法;
var zoom_pix={3:8,2:4,1:2,0:2}
multiply=zoom_pix[数学最大值(0,zoom-17)]
如果(缩放!=上一次缩放){
for(设i=0;i
google.maps.event.addListener(映射'idle',函数(){
for(设i=0;i
您的问题是,标记。图标(不总是)不是此行的字符串
:
url: String(map.markers[i].icon),
(至少在我的测试用例中,它是一个对象
)
相反,请执行以下操作(使用记录的方法和属性,而不是未记录的属性):
代码片段:
//以下示例创建复杂标记以指示附近的海滩
//悉尼,新南威尔士州,澳大利亚。请注意,锚定设置为(0,32)以对应
//到旗杆的底部。
函数initMap(){
const map=new google.maps.map(document.getElementById(“map”){
缩放:10,
中心:{
lat:-33.9,
液化天然气:151.2
},
});
设置标记(地图);
google.maps.event.addListener(映射'idle',函数(){
for(设i=0;i
/*始终明确设置贴图高度以定义div的大小
*包含映射的元素*/
#地图{
身高:100%;
}
/*可选:使示例页面填充窗口*/
html,
身体{
身高:100%;
保证金:0;
填充:0;
}
复杂标记图标
请提供一份能说明您的问题的报告,最好是一份自己在这个问题上的报告。对不起,这是我的第一个问题。在进一步的问题中,我将提供一些片段。谢谢你的建议,非常感谢。在我的例子中,我使用ImageMarker函数来使用图标url,因此我必须从对象“map.markers[I].getIcon()”和map.markers[I].getIcon().url中以字符串形式获取url,并且它有效。这是一个错误,修复了我的答案。
url: String(map.markers[i].icon),
url: map.markers[i].getIcon().url,