如何使用google.maps.Rectangle对象在谷歌地图上绘制选择/边界框/矩形,并检查标记是否落在其中
How to draw selection / bounding box / rectangle on google map using google.maps.Rectangle object and check if markers fall within it
如何在谷歌地图上绘制一个google.maps.Rectangle,同时按住shift键,然后在绘制后对其边界执行一些操作(例如返回落在其中的所有标记)?
所以我
需要在谷歌地图上画一个简单的矩形,并返回一个落在矩形内的标记数组。令人惊讶的是,我在网上找不到一个简单的例子。所以我发布这个是为了帮助其他人解决同样的问题。
如果您发现任何明显的问题,请告诉我,尽管它目前似乎可以满足我的需求。
该代码假设您有jQuery,并且已经将google地图对象存储在名为themap的变量中。
var shiftdown = false;
var gribBoundingBox = null;
var boxcomplete = false;
var original_click_pos = null;
$(window).keydown(function (evt) {
if (evt.which === 16) { // shift
shiftdown = true;
}
}).keyup(function (evt) {
if (evt.which === 16) { // shift
shiftdown = false;
}
});
function cleargribBoundingBox(){
if(gribBoundingBox !== null){
gribBoundingBox.setMap(null); // remove the rectangle
}
boxcomplete = false;
original_click_pos = null;
}
google.maps.event.addListener(themap, 'mousedown', function (e) {
if (shiftdown) {
themap.setOptions({
draggable: false
});
cleargribBoundingBox();
original_click_pos = e.latLng;
gribBoundingBox = new google.maps.Rectangle({
map: themap,
bounds: new google.maps.LatLngBounds(original_click_pos,original_click_pos),
fillOpacity: 0.15,
strokeWeight: 0.9,
clickable: false
});
}
});
google.maps.event.addListener(themap, 'mousemove', function (e) {
if(gribBoundingBox !== null){
if(!boxcomplete){
//moving mouse accross map, box is in process of being drawn
//lets update its bounds
var newbounds = new google.maps.LatLngBounds(original_click_pos,original_click_pos);
newbounds.extend(e.latLng);
gribBoundingBox.setBounds(newbounds);
} else{
//moving mouse accross map, box is present
}
} else {
//moving mouse over map, no bounding box present
//either no bounding box has been made yet or we are not holding shift and we are just dragging the map around
}
});
google.maps.event.addListener(themap, 'mouseup', function (e) {
if(gribBoundingBox !== null){ //we just completed a box
if(!boxcomplete){ //we just completed a box
boxcomplete = true;
themap.setOptions({
draggable: true
});
//check if markers are in the box
/*var boundsSelectionArea = new google.maps.LatLngBounds(
gribBoundingBox.getBounds().getSouthWest(),
gribBoundingBox.getBounds().getNorthEast()
);*/
}
}
});
https://jsfiddle.net/x1xpmhvk/
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 如何检查字符串的一部分与数组匹配
- 如何检查给定的非凸区域是否与给定矩形完全重叠
- 如何使用google.maps.Rectangle对象在谷歌地图上绘制选择/边界框/矩形,并检查标记是否落在其中
- jQuery / canvas:检查矩形是否与另一个矩形交叉
- JavaScript画布检查矩形是否包括矩形
- 小册子:如何检查多边形或矩形的内/外点
- Javascript Canvas -检查是否点击矩形