Google Maps标记图标按类型调大小:条件代码致地图无响应
问题分析与解决方案
你的代码出现页面无响应的核心原因是在JavaScript对象字面量中直接嵌入了if-else语句,这属于语法错误,导致整个脚本解析失败,地图无法完成初始化。对象字面量的属性赋值只能使用合法表达式,而if-else是语句,不能直接放在对象内部。
修正后的代码片段
把你原来的icon配置部分替换成下面的代码即可:
icon: { url: 'http://trivenialmirah.com/img/'+markers[i][4]+'.png', scaledSize: markers[i][4] === 'P' ? new google.maps.Size(20, 32) : new google.maps.Size(11, 18) }
为什么这样改?
这里用三元条件运算符(condition ? 真值结果 : 假值结果)替代了原有的if-else块,它属于合法表达式,可以直接作为对象属性值返回对应的尺寸对象,既简洁又符合JavaScript语法规范。
如果你觉得三元表达式不够直观,也可以提前计算好尺寸再赋值,可读性更强:
// 先根据dtype标记类型确定图标尺寸 let markerSize; if (markers[i][4] === 'P') { markerSize = new google.maps.Size(20, 32); } else { markerSize = new google.maps.Size(11, 18); } // 再定义icon对象 icon: { url: 'http://trivenialmirah.com/img/'+markers[i][4]+'.png', scaledSize: markerSize }
这两种写法都能解决语法错误,让脚本正常执行,同时实现红色图标(P)比蓝色图标(R)尺寸更大的需求。
内容的提问来源于stack exchange,提问作者Aryan
相关产品推荐
相关产品推荐

