Google Maps API如何为Marker标记条件设置animation动画属性
问题描述
已完成Google地图基础功能搭建,需要在添加Marker标记时支持自主选择是否触发弹跳(BOUNCE)或下落(DROP)放置动画,用于在批量展示的20-30个标记中突出特定目标。
当前通过数组存储属性定义Marker的代码可正常运行,代码如下:
let marker = new google.maps.Marker( { map: map, position: array[i], title: array[i].title, * // 待补充配置的位置 } );
需要在上述标记位置选择性添加动画属性:
animation: google.maps.Animation.BOUNCE
现有数组已为每个条目配置了值为"true"/"false"的标识字段,判断逻辑为:标识为true时设置下落动画,否则不设置动画,逻辑伪代码如下:
if (array[i].DropOrNot == "true") { set animation string to "animation: google.maps.Animation.DROP" } else { set animation string to "" }
核心问题:如何为Marker构造函数条件式添加配置属性?
解决方案
不要用拼接属性字符串的方式处理,JS对象支持直接动态赋值,Marker配置中animation字段传null或不传时,默认不会触发任何动画。
方案1:三元表达式内联写法(适配现有代码结构,改动最小)
直接在第6行位置写入条件判断即可,无需拆分原有代码结构:
let marker = new google.maps.Marker( { map: map, position: array[i], title: array[i].title, // 下落动画逻辑,需要弹跳动画把DROP替换为BOUNCE即可 animation: array[i].DropOrNot === "true" ? google.maps.Animation.DROP : null } );
如果需要同时支持「无动画/下落/弹跳」三种状态,可以把数组字段改为枚举值(比如存"drop"/"bounce"/"none"),用映射表简化判断:
animation: { drop: google.maps.Animation.DROP, bounce: google.maps.Animation.BOUNCE, none: null }[array[i].animationType]
方案2:预构造配置对象(适合后续扩展更多条件属性的场景)
如果后续需要添加更多条件判断的配置项,可以先定义基础配置对象,再按条件追加属性,代码可读性更高:
// 先写入固定的基础配置 const markerOptions = { map: map, position: array[i], title: array[i].title } // 按条件追加动画配置 if (array[i].DropOrNot === "true") { markerOptions.animation = google.maps.Animation.DROP; } // 追加弹跳判断逻辑(新增对应字段即可) if (array[i].BounceOrNot === "true") { markerOptions.animation = google.maps.Animation.BOUNCE; } // 传入构造函数生成Marker let marker = new google.maps.Marker(markerOptions);
注意:不要给
animation字段传空字符串,会触发API报错,必须传入官方定义的动画常量,或者null/undefined表示无动画。
内容的提问来源于stack exchange,提问作者MarkSealey
相关产品推荐
相关产品推荐

