我处于这样一种情况,我需要绘制一个覆盖世界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);
});
答案 0 :(得分:0)
在我搜索了gmaps bug报告后,我发现这是一个180度的限制。使用这个新术语,我能够找到这个解决方案:How do I draw rectangle covering more than 180 degrees longitude using google maps drawing library?
我使用的只是drawRectangle
听众中的mousemove
和calculateBounds
以获得正确的尺寸。
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);
};