Openlayers 运用WFS添加到数据库一个点,怎样才能显示在页面

Openlayers 运用WFS添加到数据库一个点,怎样才能显示在页面,第1张

这个是官方例子:

var map, layer

function init(){

OpenLayers.ProxyHost="/proxy/?url="

map = new OpenLayers.Map('map')

layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",

"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} )

map.addLayer(layer)

map.setCenter(new OpenLayers.LonLat(0, 0), 0)

var newl = new OpenLayers.Layer.Text( "text", { location:"./textfile.txt"} )

map.addLayer(newl)

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

map.addLayer(markers)

var size = new OpenLayers.Size(21,25)

var offset = new OpenLayers.Pixel(-(size.w/2), -size.h)

var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset)

markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon))

var halfIcon = icon.clone()

markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,45),halfIcon))

marker = new OpenLayers.Marker(new OpenLayers.LonLat(90,10),icon.clone())

marker.setOpacity(0.2)

marker.events.register('mousedown', marker, function(evt) { alert(this.icon.url)OpenLayers.Event.stop(evt)})

JSON数据:

[

{"name":"白银区","position":[103,37]},

{"name":"平川区","position":[103,38]},

{"name":"靖远县","position":[103,39]},

{"name":"景泰县","position":[103,40]},

{"name":"会宁县","position":[103,41]}

]

添加多个标注

$.getJSON('openlayers/json_map/tmp/1.json',function(data){

//创建新标注层

Mk_2 = new OpenLayers.Layer.Markers("白银")

//设定初始化标注不可见

Mk_2.setOpacity(1)

//根据JSON服务器传回的数据创建标注点

$.each(data, function(i,n){

//创建新标注

var Mk = new OpenLayers.Marker(new OpenLayers.LonLat(n.position).transform("EPSG:4326", "EPSG:900913"))

//为标注注册事件

Mk.events.register("mousedown", Mk,function(evt) {

alert(n.name)

OpenLayers.Event.stop(evt)

})

//把标注加进标注层里

Mk_2.addMarker(Mk)

})

//把标注添加到地图上

map.addLayer(Mk_2)

})

通常需要在地图上标注出一些景点、建筑或者公共设施,可以选择使用矢量标注或者聚合标注。openlayers 添加矢量标注的原理是将标注添加到一个新建的矢量层上,再将矢量层添加到地图上叠加显示;聚合标注的原理同上,但它适用于标注的数据量非常大的场景,随着层级的放大,会展示更多的标注,缩小时,则将标注聚合显示,能够在大量加载标注时提高渲染性能。

1、矢量标注

2、聚合标注

openlayers 可以创建一个 Overlay 覆盖层,这个覆盖层能够展示自己写的 html 内容,从而实现添加各种所需的覆盖物。也可以通过这个方法来添加标注,但覆盖层添加的覆盖物会影响地图的拖动(即在覆盖物上进行滑动 *** 作时地图无法响应,虽然可以通过设置 stopEvent 将滑动事件传递到地图上,但这样会导致在IOS端的覆盖物无法进行点击 *** 作)。

因此如果要添加可以点击并且不影响地图拖动的标注时,建议使用矢量层标注,而如果要展示自定义的一些内容,如点击地图d出对话信息框、地图上的自定义按钮等则使用覆盖层更加合适。

1、加载覆盖层

2、添加地图点击监听事件

原理大致与添加矢量标注相同,都是添加在矢量图层上,不过这里添加的是线对象。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11304585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存