OpenLayers-添加Marker

在OpenLayers Map添加Marker。

1.创建Marker图层

Maker由Marker图层进行管理

var marker_layer = new OpenLayers.Layer.Markers("markers");

2. 创建Marker对象

复制代码
复制代码
 1 //创建Marker 位置
 2 var pos = new new OpenLayers.LonLat (x, y);
 3 //创建Marker对象
 4 var marker = new OpenLayers.Marker ( pos );
 5 //透明度
 6 marker.setOpacity(opacity);
 7 //注册鼠标事件
 8 marker.events.register( 'mousedown',  marker,  onMakerMouseDown);
 9 //添加marker到marker layer
10 marker_layer.addMarker(marker);
复制代码
复制代码

在marker上注册一个mousedown事件,mousedown事件的响应函数为onMakerMouseDown。

3、定义Marker鼠标事件

function onMakerMouseDown(evt)
{
    alert(marker.CLASS_NAME);    //弹出Marker的类名
    OpenLayers.Event.stop(evt);  //停止事件
}

鼠标点击后,添加一个红色的Marker。

完整代码如下

复制代码
复制代码
 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 2 <HTML>
 3  <HEAD>
 4   <TITLE> OpenLayer : Event Mouse </TITLE>
 5   <link rel="stylesheet" href="./OpenLayers-2.10/theme/default/style.css" type="text/css" />
 6   <link rel="stylesheet" href="./css/style.css" type="text/css" />
 7   <script src="./OpenLayers-2.10/lib/OpenLayers.js"></script>
 8   <script  type="text/javascript">
 9     
10     var map = null;
11     var wms_url = "http://127.0.0.1:8080/geoserver/wms?";
12     var wms_version = "1.3.0";
13     var layer_name = 'country';
14 
15     var wms_layer = null;
16     var marker_layer = null;
17 
18     var marker = null;
19 
20     function init()
21     {
22         //创建map对象,
23         map = new OpenLayers.Map("map");
24         wms_layer = new OpenLayers.Layer.WMS("OpenLayers WMS",
25                                              wms_url,
26                                              {layers: layer_name},
27                                              {singleTile: true});
28 
29         marker_layer = new OpenLayers.Layer.Markers("markers");
30 
31         // 添加图层
32         map.addLayers([wms_layer, marker_layer]);        
33         map.addControl( new OpenLayers.Control.LayerSwitcher() );
34         //---------------------------------------------------------------//
35         //注册鼠标事件
36         map.events.register('mousedown', map, onMakerMouseDown);
37 
38         // 放大到全屏
39         map.zoomToMaxExtent();
40     }
41 
42     function addMarker(x, y, opacity) 
43     {
44 
45         marker = new OpenLayers.Marker(new OpenLayers.LonLat(x, y));
46         //透明度
47         marker.setOpacity(opacity);
48         //注册鼠标事件
49         marker.events.register('mousedown', marker, onMakerMouseDown);
50         marker_layer.addMarker(marker);
51     }
52 
53     /*
54      * 鼠标点击Marker的响应函数
55      */
56     function onMakerMouseDown(evt)
57     {
58         //alert(evt.x);
59         alert(marker.CLASS_NAME);
60         OpenLayers.Event.stop(evt);
61     }
62 
63     function onAddMarker()
64     {
65         var x = document.getElementById("X").value;
66         var y = document.getElementById("Y").value;
67         var opacity = document.getElementById("opacity").value;
68 
69         addMarker(x, y, opacity);
70     }
71 
72   </script>
73 
74  </HEAD>
75 
76  <BODY onload="init()">
77     <div>
78       <div>X<input type="text" id="X" value="0">
79            Y<input type="text" id="Y" value="0">
80            透明度<input type="text" id="opacity" value="255">
81            <input type="button" value="Add Marker" onClick="onAddMarker();"></div>
82       <div id="map" class="smallmap"></div>
83     </div>
84  </BODY>
85 </HTML>
复制代码
复制代码
posted @   韩慧兵  阅读(3001)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示