Google使用错误的宽度映射自定义叠加层

时间:2014-11-14 07:08:56

标签: google-maps google-maps-api-3 overlay custom-overlay

我正在尝试为谷歌地图制作自定义叠加层。我使用这个this示例。我的叠加宽度定义有问题。

var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());
var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());

// Resize the image's div to fit the indicated dimensions.
var div = this.div_;
div.style.left = sw.x + 'px';
div.style.top = ne.y + 'px';
div.style.width = (ne.x - sw.x) + 'px';
div.style.height = (sw.y - ne.y) + 'px';

此代码返回的宽度小于一个像素,用于覆盖此latlonbox:

<LatLonBox>
<north>90.0</north>
<south>-90.0</south>
<east>180.0</east>
<west>-180.0</west>
</LatLonBox>

有没有人遇到过这个问题?也许有人知道解决方案。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

当边界与素数子午线相交时,似乎会发生这种情况。

尝试这样计算宽度:

         ((ne.x - sw.x)
          +
          (((ne.x - sw.x)<0
            ||
          this.bounds_.getNorthEast().lng()
          -
          this.bounds_.getSouthWest().lng()>=360)
            ? overlayProjection.getWorldWidth()
            : 0))

演示:http://jsfiddle.net/doktormolle/4vj37ecy/