谷歌地图绘制矩形超过50%的世界

时间:2015-08-05 16:03:47

标签: javascript css google-maps

我处于这样一种情况,我需要绘制一个覆盖世界50%以上地理选择的矩形。

使用gmaps中的默认绘图工具,如果矩形的宽度超过世界地图的50%,则会反转选择。垂直高度没有这种尺寸限制。

是否有任何选项可以禁用这种奇怪的行为或解决方法来绕过它?

我尝试将DragToZoom用于修改后的功能,但这很麻烦且很笨重。

我一直在搜索API文档2天,但找不到解决方案。

以下是显示50%+地图覆盖率问题的a fiddle

google.maps.event.addListener(drawingManager, 'rectanglecomplete', function (rectangle) {
    var position = rectangle.getBounds();
    $('#marker-position').append('rectangle => '+position);
});

1 个答案:

答案 0 :(得分:0)

在我搜索了gmaps bug报告后,我发现这是一个180度的限制。使用这个新术语,我能够找到这个解决方案:How do I draw rectangle covering more than 180 degrees longitude using google maps drawing library?

我使用的只是drawRectangle听众中的mousemovecalculateBounds以获得正确的尺寸。

google.maps.event.addListener(self.map, 'mousemove', function(e) {
        if (self.select) {
            self.drawRectangle(e.latLng);
        }
    });

    self.calculateBounds = function(newEndPoint) {
        var north = self.startPoint.lat() >= newEndPoint.lat() ? self.startPoint.lat() : newEndPoint.lat();
        var south = self.startPoint.lat() <= newEndPoint.lat() ? self.startPoint.lat() : newEndPoint.lat();
        var sw = new google.maps.LatLng(south, self.startPoint.lng());
        var ne = new google.maps.LatLng(north, newEndPoint.lng());

        return new google.maps.LatLngBounds(sw, ne);
    };

    self.drawRectangle = function(newEndPoint) {
        self.rectangle.setBounds(self.calculateBounds(newEndPoint));
        self.rectangle.setMap(self.map);
    };