感谢您收看此问题。
我正在为我所居住的城市做一个离子应用程序。它使用谷歌地图显示与城市相关的一些信息。此外,我想将自定义控件放到地图上,以显示不同类型的标记,这些标记是公共汽车站或医院等服务。问题是我无法解决这个错误:"未捕获的TypeError:无法读取属性' zIndex'未定义"我已经尝试了这个问题的大多数其他答案。
我试图在我的应用程序的控制器中添加元素(我认为Legend是它的名字),就像这样:
var controlesDiv = document.createElement('DIV');
var controles = new CrearLeyenda(controlesDiv, map);
controlesDiv.index = 4;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controles);
然后,在控制器外面,我有 CrearLeyenda 功能:
function CrearLeyenda(controlesDiv, map) {
controlesDiv.style.padding = '5px 0px';
var controlesUI = document.createElement('DIV');
controlesUI.style.backgroundColor = 'white';
controlesUI.style.borderStyle = 'solid';
controlesUI.style.borderWidth = '1px';
controlesUI.style.borderColor = 'gray';
controlesUI.style.boxShadow = 'rgba(0, 0, 0, 0.398438) 0px 2px 4px';
controlesUI.style.cursor = 'pointer';
controlesUI.style.textAlign = 'center';
controlesUI.title = 'Click to see Churches';
controlesDiv.appendChild(controlesUI);
var controlesText = document.createElement('DIV');
controlesText.style.fontFamily = 'Arial,sans-serif';
controlesText.style.fontSize = '13px';
controlesText.style.padding = '1px 6px';
controlesText.style.fontWeight = 'bold';
controlesText.innerHTML = 'Controles';
controlesUI.appendChild(controlesText);
google.maps.event.addDomListener(controlesUI, 'click', function () {
alert("clicked");
if (controlesText.style.fontWeight == 'bold') {
controlesText.style.fontWeight = 'normal';
} else {
controlesText.style.fontWeight = 'bold';
}
});
google.maps.event.addDomListener(controlesUI, 'mouseover', function () {
controlesUI.style.backgroundColor = '#e8e8e8';
});
google.maps.event.addDomListener(controlesUI, 'mouseout', function () {
controlesUI.style.backgroundColor = 'white';
});}
我希望你能帮助我,对不起我的英语,如果你需要更多适应症,我会尽力解释。
提前致谢
答案 0 :(得分:1)
您正在调用它,就像它是返回对象的类构造函数一样:
var controles = new CrearLeyenda(controlesDiv, map);
然而,CrearLeyenda功能似乎并没有做那样的事情。所以controles
变量此时为NULL。在此之后尝试添加console.log(controles);
并查看。
我认为您需要将其添加到CrearLeyenda
函数的末尾:
return controlesUI;
并改变你如何称呼它:
var controles = CrearLeyenda(controlesDiv, map);
答案 1 :(得分:0)
您只需将map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controles);
更改为map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlesDiv);
即可解决问题。似乎其他代码没问题,或者至少是谷歌地图文档推荐的代码:https://developers.google.com/maps/documentation/javascript/examples/control-custom
感谢邓肯
发现了这一点