- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发 Google map ,希望实现一项功能,用户可以使用鼠标绘制一个方框/矩形来选择 map 上的区域(就像在窗口中选择多个文件一样)。选择后,我想获取该区域中的所有标记。我一直在查看 Google map api 和搜索,但找不到解决方案。我尝试使用 jQuery Selectable 进行选择,但它返回的只是一堆 div,我无法确定是否选择了任何标记。
最佳答案
我找到了一个 Library keydragzoom ( http://google-maps-utility-library-v3.googlecode.com/svn/tags/keydragzoom/1.0/docs/reference.html ) 并用它在页面上绘制了一个矩形。
后来,我编辑了库并阻止它缩放所选区域,而是让它在“dragend”事件中返回正确的坐标。然后,我手动循环遍历 map 上的所有标记,以查找该特定区域内的标记。图书馆没有为我提供正确的坐标,因此我进行了以下更改。
将 DragZoom 函数更改为
var prj = null;
function DragZoom(map, opt_zoomOpts) {
var ov = new google.maps.OverlayView();
var me = this;
ov.onAdd = function () {
me.init_(map, opt_zoomOpts);
};
ov.draw = function () {
};
ov.onRemove = function () {
};
ov.setMap(map);
this.prjov_ = ov;
google.maps.event.addListener(map, 'idle', function () {
prj = ov.getProjection();
});
}
并将DragZoom.prototype.onMouseUp_函数添加到
DragZoom.prototype.onMouseUp_ = function (e) {
this.mouseDown_ = false;
if (this.dragging_) {
var left = Math.min(this.startPt_.x, this.endPt_.x);
var top = Math.min(this.startPt_.y, this.endPt_.y);
var width = Math.abs(this.startPt_.x - this.endPt_.x);
var height = Math.abs(this.startPt_.y - this.endPt_.y);
var points={
top: top,
left: left,
bottom: top + height,
right: left + width
};
var prj = this.prjov_.getProjection();
// 2009-05-29: since V3 does not have fromContainerPixel,
//needs find offset here
var containerPos = getElementPosition(this.map_.getDiv());
var mapPanePos = getElementPosition(this.prjov_.getPanes().mapPane);
left = left + (containerPos.left - mapPanePos.left);
top = top + (containerPos.top - mapPanePos.top);
var sw = prj.fromDivPixelToLatLng(new google.maps.Point(left, top + height));
var ne = prj.fromDivPixelToLatLng(new google.maps.Point(left + width, top));
var bnds = new google.maps.LatLngBounds(sw, ne);
//this.map_.fitBounds(bnds);
this.dragging_ = false;
this.boxDiv_.style.display = 'none';
/**
* This event is fired when the drag operation ends.
* Note that the event is not fired if the hot key is released before the drag operation ends.
* @name DragZoom#dragend
* @param {GLatLngBounds} newBounds
* @event
*/
google.maps.event.trigger(this, 'dragend', points);
}
};
关于google-maps - 在 Google map 中绘制方框/矩形选区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7976196/
用例 在圆 Angular 方框中显示用户上传的照片。该图像将具有横向纵横比,但需要将其裁剪为正方形以适合容器内部。我们决定只显示照片的右侧(使照片的左侧不再可见)。 假设如下 照片无法预处理,我正在
为什么要使用滤波 消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的
如何在vis js中设置内部可以有标签的形状的大小?例如 代码1: shape: 'circle', color: { border: 'black',
在我的 JLabel/JButton 组件等上,我使用 HTML 来格式化文本。这对于除古吉拉特语之外的所有语言都非常有效。 我使用普通的 ASCII 字母来编码古吉拉特语字母,例如: \u0aae\
我是一名优秀的程序员,十分优秀!