我有一个谷歌地图,在它是一个矩形,这是可编辑的,可移动的和大小可调等。我正在寻找的是一种方法来锁定矩形的给定高度,所以只有宽度可以改变。
发布于 2014-09-17 11:07:49
您可以使用JavaScript中的bounds_changed事件防止矩形调整高度。
下面是一个有效的jsfiddle:http://jsfiddle.net/h7ee4368/
矩形接口参考:https://developers.google.com/maps/documentation/javascript/reference?hl=de#Rectangle
JavaScript源:
var rectangle;
var originalBounds;
var map;
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(44.5452, -78.5389),
zoom: 9
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(44.490, -78.649),
new google.maps.LatLng(44.599, -78.443)
);
originalBounds = bounds;
// Define the rectangle and set its editable property to true.
rectangle = new google.maps.Rectangle({
bounds: bounds,
editable: true,
draggable: true
});
rectangle.setMap(map);
// Add an event listener on the rectangle.
google.maps.event.addListener(rectangle, 'bounds_changed', boundsChangedCb);
}
var skipBoundsChangedCb = false;
function boundsChangedCb(event) {
if(skipBoundsChangedCb) return;
var ne = rectangle.getBounds().getNorthEast();
var sw = rectangle.getBounds().getSouthWest();
var origNe = originalBounds.getNorthEast();
var origSw = originalBounds.getSouthWest();
//avoid recursion
skipBoundsChangedCb = true;
rectangle.setBounds(new google.maps.LatLngBounds(
new google.maps.LatLng(ne.lat() - origNe.lat() + origSw.lat(), sw.lng()),
ne
));
skipBoundsChangedCb = false;
origNe = ne;
origSw = sw;
}
google.maps.event.addDomListener(window, 'load', initialize);https://stackoverflow.com/questions/25685320
复制相似问题