能否结合PlaceId使用Advanced Markers?传统标记方式执行报错
用AdvancedMarkerElement通过PlaceId添加标记的实现方法
可以实现,但AdvancedMarkerElement的API设计和传统标记(Marker)不同,不能直接通过place属性传入PlaceId,这就是你触发invalidValueError的原因。
正确实现方式
和传统标记的逻辑类似,仍需先通过PlacesService获取目标地点的几何坐标,再将坐标赋值给AdvancedMarkerElement的position属性:
const service = new google.maps.places.PlacesService(map); service.getDetails({ placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4' }, function (result, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { const marker = new google.maps.marker.AdvancedMarkerElement({ map: map, position: result.geometry.location // 传入获取到的经纬度坐标 }); } });
核心差异说明
- 传统Marker支持通过
place属性直接传入PlaceId与location组合,但AdvancedMarkerElement没有该属性,必须显式传入position坐标值。 - 建议先判断PlacesService的请求状态,避免因请求失败(如PlaceId无效、网络问题)导致后续代码出错。
内容的提问来源于stack exchange,提问作者Arjun Sharma
相关产品推荐
相关产品推荐

