Google карты пользовательские наложения с неправильной шириной

Я пытаюсь сделать свое собственное наложение для карт Google. Я использую этот пример. И у меня есть проблема с определением ширины наложения.

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 ответ

Решение

Похоже, это происходит, когда границы пересекают первичный меридиан.

Попробуйте это, чтобы рассчитать ширину:

         ((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/

Другие вопросы по тегам