0

我正在显示一个包含许多 MarkerIcon 的地图,它们都基于相同的 png,但缩放到不同的大小。

基本尺寸是 64 x 64,如果我按比例缩小,一切都会按预期工作。

如果我放大,图标会被裁剪。我做了一个简单的 JSFiddle 来说明这个问题 - 这是缩放图标的代码。我的理解是第一个大小是以像素为单位的源图像的实际大小,接下来的两个位置是我暂时不关心的原点和锚点,最终大小是以像素为单位的缩放大小。

var icon_scaled = new google.maps.MarkerImage(
    img-filename,
    new google.maps.Size(64, 64),
    null,
    null,
    new google.maps.Size(scaled_size, scaled_size)
);

在我找到的示例中,您可以省略第一个大小并让浏览器计算它。这适用于 Chrome,但在 Firefox 上失败,并显示如下错误消息:

Error: IndexSizeError: Index or size is negative or 
greater than the allowed amount

在这里小提琴:http: //jsfiddle.net/y8E54/

我怎样才能在两个浏览器上做到这一点而不会出现任何错误?

顺便说一句:我知道 MarkerIcon 已被弃用 - 我的实验根据文档使用“图标”替换它并指定“大小”和“缩放大小”会导致相同类型的问题。

4

1 回答 1

1

我遇到了同样的问题,经过一些研究和简单的解决方法,我能够解决这个头痛问题。

这就是我所做的。

看来您需要同时设置“size”和“scaleSize”属性才能在 FF 中工作。但后来,还有一件事让我烦恼。当我将“大小”属性设置为图标的原始大小时,图标会缩放但突然被裁剪而没有显示完整的图标——可能是因为大小限制。

因此,我将“大小”属性设置为缩放后的 img 的最大限制(在我的情况下为 64),它就像一个魅力。

                   cObject.setIcon({
                        url: cObjects[y].getIcon().url,
                        scaledSize: new google.maps.Size(icoSize, icoSize-1),
                        size:new google.maps.Size(64, 64)
                    });

于 2014-04-08T15:15:40.703 回答