Google Apps Script中StaticMap的setCustomMarkerStyle()方法无法更改标记样式
Google Apps Script中StaticMap的setCustomMarkerStyle()方法无法更改标记样式
嘿,我看了你的代码,发现几个可能导致setCustomMarkerStyle()不生效的问题,咱们一步步来解决:
首先,你的代码里重复调用了好几次setCustomMarkerStyle(),而且调用顺序出了问题——自定义标记样式必须在添加标记前设置,不然已经添加的标记会沿用默认样式,后续再修改样式也不会回溯改变已添加的标记。另外零散的调用写法也可能让样式没正确关联到标记上。
咱们来修正一下代码,优化逻辑:
function createCustomMarkerMap() { // 初始化StaticMap实例 var map = Maps.newStaticMap(); // 先设置自定义标记样式(这一步要在addMarker之前) map.setCustomMarkerStyle("https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/640px-Google_2015_logo.svg.png", true); // 添加标记,此时会自动使用上面设置的自定义样式 map.addMarker(42.7048837, 27.8111292); // 生成并保存图片到云端硬盘 var image = DriveApp.createFile(map.getBlob()); Logger.log(image.getUrl()); Logger.log(image.getDownloadUrl()); return image.getDownloadUrl(); }
关键注意点:
- 调用顺序是核心:每次添加标记时,会使用当前生效的标记样式设置,只有在
addMarker()之前调用setCustomMarkerStyle(),样式才会应用到后续添加的标记上。 - 避免无效重复调用:你之前多次重复设置样式完全没必要,一次设置就足够覆盖后续的标记添加操作。
- 检查图片规格:Google Static Maps对自定义标记图片有尺寸限制(建议不超过64x64像素),你用的这个logo是640px的大图,很可能因为尺寸超限被自动降级为默认标记,换成小尺寸的图片试试大概率就能生效了。
备注:内容来源于stack exchange,提问作者vstepaniuk
相关产品推荐
相关产品推荐

