Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在谷歌地图上覆盖一些东西,而不阻止鼠标的交互?_Javascript_Google Maps Api 3 - Fatal编程技术网

Javascript 如何在谷歌地图上覆盖一些东西,而不阻止鼠标的交互?

Javascript 如何在谷歌地图上覆盖一些东西,而不阻止鼠标的交互?,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我想在谷歌地图上画些东西。所以我想在地图上放一块画布,然后画一些东西,只是这会阻碍与地图的交互。我怎样才能画一些东西,但让地图的其余部分保持交互?相关代码片段: 风格: <style> #myCanvas { border: 1px solid #9C9898; } #canvas-wrap { position:relative; } /* Make this a positioned parent */ #map_canvas { position:abs

我想在谷歌地图上画些东西。所以我想在地图上放一块画布,然后画一些东西,只是这会阻碍与地图的交互。我怎样才能画一些东西,但让地图的其余部分保持交互?相关代码片段:

风格:

<style>
#myCanvas {
    border: 1px solid #9C9898;
}
#canvas-wrap {
    position:relative;
} /* Make this a positioned parent */
#map_canvas {
    position:absolute;
    top:0px;
    left:0px;
    z-index: -1;
}
</style>

#我的画布{
边框:1px实心#9C9898;
}
#帆布包装{
位置:相对位置;
}/*使其成为定位的父对象*/
#地图画布{
位置:绝对位置;
顶部:0px;
左:0px;
z指数:-1;
}
Javascript:

<script type="text/javascript">
function loadMap() {
  var fenway = new google.maps.LatLng(42.345573,-71.098326);
  var mapOptions = {center: fenway, zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP };
  var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function drawLine(){
  var canvas = document.getElementById("myCanvas");
  var context = canvas.getContext("2d");
  context.beginPath();
  context.moveTo(100, 100);
  context.lineTo(400, 400);
  context.lineWidth = 9;
  context.stroke();
};

function init(){
  loadMap();
  drawLine();
}
</script>

函数loadMap(){
var fenway=new google.maps.LatLng(42.345573,-71.098326);
var-mapOptions={center:fenway,zoom:14,mapTypeId:google.maps.mapTypeId.ROADMAP};
var map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
}
函数drawLine(){
var canvas=document.getElementById(“myCanvas”);
var context=canvas.getContext(“2d”);
context.beginPath();
上下文。移动到(100100);
lineTo(400400);
context.lineWidth=9;
stroke();
};
函数init(){
loadMap();
抽绳();
}
HTML:


您要查找的是“指针事件”CSS属性:

#map_canvas {
    position:absolute;
    top:0px;
    left:0px;
    z-index: -1;
    pointer-events:none;
}
这将基本上使画布对鼠标事件透明

编辑-显然这只适用于某些浏览器。这是一种更复杂但跨浏览器兼容的方法:


只要覆盖层不需要用户交互,Ocelot20的答案就有效。如果需要,您需要使用Google提供的多边形(etc)类

转发事件可能有效,但你完全受谷歌的摆布,没有改变事件机制的一些小细节。而且,并非无足轻重的是,您必须在两个方向上转发事件:从谷歌地图层到画布,从画布的透明部分到谷歌地图层

例如,使用多边形;)

#map_canvas {
    position:absolute;
    top:0px;
    left:0px;
    z-index: -1;
    pointer-events:none;
}