我有一个屏幕,其中显示了两件事。
- 使用 Openlayers 渲染 Google 街道地图。
- 渲染侧面板以显示国家列表及其年度人口增长。
下面的代码解释了这个想法。代码是用 HTML 编写的。
<body>
<div id="map" style="z-index:0;"></div>
<div id="sidePanel" style="position:absolute;
top:0px;
left:0px;
width:30%;
height:100%;
z-index:1;
background-color:black">
//content in this div will be filled dynamically through ajax call
</div>
</body>
一切都完美显示。但是,当我单击#sidepanel
并按住鼠标单击时,如果我拖动,则#map
接收鼠标单击并且屏幕上发生“平移操作”。
我不希望“#map”在点击时接收鼠标点击#sidepanel
。此外,当我将鼠标#sidepanel
放在该 div 上并双击时,#map
正在接收双击并且正在发生缩放操作。我想分开#map
and #sidepanel
。
我仅在使用 Firefox 和 Chrome 浏览器时遇到此问题。IE 可以很好地满足我的要求。请提出一些想法。谢谢你的耐心。
这是我的完整代码
<html>
<head>
<title>Map</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&v=3.6"></script>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body onload="RenderGoogleMap();">
<div id="Map_Screen" style="z-index: -1;"></div>
<div id="sidePanel" style="overflow:hidden;position:absolute;top:0px;left:0px;width:35%;height:100%;background-color:black;"></div>
</body>
</html>
<script type="text/javascript">
function RenderGoogleMap() {
var options = {
projection : "EPSG:900913",
units : "m",
maxResolution : 156543.0339,
maxExtent : new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34, 20037508.34),
displayProjection : new OpenLayers.Projection("EPSG:4326")
};
map = new OpenLayers.Map('Map_Screen', options);
var gmap = new OpenLayers.Layer.Google("GoogleMap", { 'sphericalMercator' : true, numZoomLevels : 18 });
map.addLayers([ gmap ]);
map.zoomTo(3);
var control = map.addControl( new OpenLayers.Control.Navigation() );
control.activate();
}
</script>