Bing Maps V8 JS API GroundOverlay belowLabels 鼠标事件
Bing Maps V8 JS API GroundOverlay beneathLabels mouse events
我使用透明的 png 作为 groundoverlay 覆盖整个 map.I 必须设置 belowLabels=false 因为地图的标签层使我的叠加层的某些部分不可读。但是在 belowLabels=false 的情况下,所有 mouse/keyboard 事件都会转到我的 groundoverlay 而不是地图。我知道这个 sis 已记录,但我不想那样,我如何将这些事件路由到地图?在 google-api 中,我简单地将 groundoverlay 声明为不可点击。或者除了在地面上将透明 png 放在整个地图上方而不捕获所有事件之外还有其他方法吗?
我认为要让鼠标事件通过地面叠加层,pointer-events
CSS 样式需要设置为 none
。我相信 IE10 中的图像不支持此功能(发布此 SDK 时 Bing 地图支持的最小浏览器,所以这可能不是内置选项的原因)。做了一些实验,以下似乎有效:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var map, overlay;
function GetMap() {
map = new Microsoft.Maps.Map('#myMap', {
center: new Microsoft.Maps.Location(-16.366, -46.8945),
zoom: 17
});
overlay = new Microsoft.Maps.GroundOverlay({
bounds: Microsoft.Maps.LocationRect.fromEdges(-16.36523189120857, -46.89686679103114, -16.3674247514764, -46.89337059621697),
imageUrl: 'https://upload.wikimedia.org/wikipedia/commons/e/e9/Foto_a%C3%A9rea_de_Una%C3%AD_detalhando_o_c%C3%B3rrego_Canabrava_3.jpg',
rotation: 298,
beneathLabels: false
});
map.layers.insert(overlay);
//Access the underlying image object and disable pointer events so that mouse events flow through to the map.
overlay._img.style.pointerEvents = 'none';
}
</script>
<script async defer src="https://bing.com/api/maps/mapcontrol?callback=GetMap&key=[Your Bing Maps Key]"></script>
</head>
<body>
<div id="myMap" style="position:relative;width:800px;height:600px;"></div>
</body>
</html>
我使用透明的 png 作为 groundoverlay 覆盖整个 map.I 必须设置 belowLabels=false 因为地图的标签层使我的叠加层的某些部分不可读。但是在 belowLabels=false 的情况下,所有 mouse/keyboard 事件都会转到我的 groundoverlay 而不是地图。我知道这个 sis 已记录,但我不想那样,我如何将这些事件路由到地图?在 google-api 中,我简单地将 groundoverlay 声明为不可点击。或者除了在地面上将透明 png 放在整个地图上方而不捕获所有事件之外还有其他方法吗?
我认为要让鼠标事件通过地面叠加层,pointer-events
CSS 样式需要设置为 none
。我相信 IE10 中的图像不支持此功能(发布此 SDK 时 Bing 地图支持的最小浏览器,所以这可能不是内置选项的原因)。做了一些实验,以下似乎有效:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var map, overlay;
function GetMap() {
map = new Microsoft.Maps.Map('#myMap', {
center: new Microsoft.Maps.Location(-16.366, -46.8945),
zoom: 17
});
overlay = new Microsoft.Maps.GroundOverlay({
bounds: Microsoft.Maps.LocationRect.fromEdges(-16.36523189120857, -46.89686679103114, -16.3674247514764, -46.89337059621697),
imageUrl: 'https://upload.wikimedia.org/wikipedia/commons/e/e9/Foto_a%C3%A9rea_de_Una%C3%AD_detalhando_o_c%C3%B3rrego_Canabrava_3.jpg',
rotation: 298,
beneathLabels: false
});
map.layers.insert(overlay);
//Access the underlying image object and disable pointer events so that mouse events flow through to the map.
overlay._img.style.pointerEvents = 'none';
}
</script>
<script async defer src="https://bing.com/api/maps/mapcontrol?callback=GetMap&key=[Your Bing Maps Key]"></script>
</head>
<body>
<div id="myMap" style="position:relative;width:800px;height:600px;"></div>
</body>
</html>