`

OpenLayers实现根据经纬度范围在地图上定位并画出区域

阅读更多

昨天完成了在页面上展现WMS服务地图。
之后的业务是在地图上定位数据的显示区域。用于定位的元数据在新建时会初始化一个经纬度范围,定位的原理是根据这个经纬度范围确定在地图上显示的范围,并将区域用一个矩形框起来。
由于是头一次做地图定位,走了很多的冤枉路。下面把过程记录下来,和大家一起分享。


尝试1:在得到经纬度(四个点,分别是东经,西经,南纬,北纬),根据上述的经纬度取区域中心点的经纬度,然后根据这个中心点的经纬度定位。这期间遇到的问题是显示地图和定位按钮不在同一个frame中,导致了,定位按钮所触发的js函数始终得不到地图的属性。之后改了按钮js函数的调用路径才得以解决。一个很奇葩的路径:

 

window.parent.frames['right'].Location()

 

下面是尝试1的代码片段:

 

 

if(marker != null){

map.display(false); //隐藏上一次的标记

}

//冲map页面获取map的属性值

var lon = (parseFloat(west) + parseFloat(east))/2;

var lat = (parseFloat(south) + parseFloat(north))/2;

var lonlat = new OpenLayers.LonLat(lon,lat);  //得到区域中心点的范围

//alert(lonlat);

map.zoomTo(3);

map.panTo(lonlat);

//定一个Mark层

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

        map.addLayer(markers);

    var size = new OpenLayers.Size(22,34);

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

    var icon = new OpenLayers.Icon('../images/hover.png',size,offset);

    markers.addMarker(new OpenLayers.Marker(lonlat,icon));

 

上面的代码片段采用的是Markers来标记一个点,和定位区域在理解上有所出入,所以果断把代码注释掉,改用box来做区域标记。下面是代码片段:

 

 

var lon = (parseFloat(west) + parseFloat(east))/2;

var lat = (parseFloat(south) + parseFloat(north))/2;

var lonlat = new OpenLayers.LonLat(lon,lat);  //得到区域中心点的范围

//定义一个box层

    var boxes  = new OpenLayers.Layer.Boxes( "Boxes" );

    if(this.box != null){

    this.box.display(false); //清除上一次的区域标记

    }

    //定义一个Bounds

    bounds = new OpenLayers.Bounds(); 

    //有参数生成两个经纬度

    var lonlat1 = new OpenLayers.LonLat(parseFloat(west),parseFloat(south));

    var lonlat2 = new OpenLayers.LonLat(parseFloat(east),parseFloat(north));

    bounds.extend(lonlat1);

    bounds.extend(lonlat2);//生成一个经纬度范围的bounds

 

    box = new OpenLayers.Marker.Box(bounds);

    box.events.register("click", box, function (e) {

                      this.setBorder("blue");

                    });//注册box的点击事件

    boxes.addMarker(box);

    map.addLayer(boxes);

    map.zoomTo(3); //以第3级方式显示地图

map.panTo(lonlat); //平移到范围的中心点

 

上面就是一个使用OpenLayers实现在地图上以一个区域定位的例子。鉴于个人对OpenLayers的理解有限,实现方法可能不是最佳的,请谅解。

分享到:
评论

相关推荐

    Openlayers经典例子

    13. **鼠标坐标**:OpenLayers可以实时显示鼠标在地图上的经纬度坐标,这对于地理定位和测量很有帮助。 14. **标签**:在地图上添加标签可以提供额外的信息,例如对地点或特征的命名。OpenLayers支持动态创建和更新...

    openlayers离线文档

    OpenLayers 是一个强大的开源JavaScript库,专为在Web上创建交互式地图应用而设计。它支持多种地图数据源,包括WMS、WFS、TMS等,并提供了丰富的地图操作功能,如缩放、平移、图层管理和地理定位。这份离线文档包含...

    修正的经纬度球面面积计算

    通过对所提供的文件信息进行分析,我们可以看出作者在解决OpenLayers面积计算不准确的问题上,采用了基于球面几何原理的方法,并且实现了较为详细的JavaScript函数`calcArea`。这种方法不仅有助于提高面积计算的准确...

    天地图-拾取经纬度坐标-实例

    这种功能通常通过JavaScript的GIS库实现,如OpenLayers或Leaflet,它们可以与天地图的API结合,获取地图交互事件,并将鼠标点击位置转换为经纬度坐标。 实现这一功能的关键步骤包括: 1. 引入GIS库:在HTML中引入...

    openlayer使用方位坐标系显示北极地区

    在OpenLayers中,显示北极地区的地图需要特殊处理,因为常规的经纬度坐标系(WGS84)在极地区域可能会出现扭曲。本教程将详细解释如何利用OpenLayers的方位坐标系(Azimuthal Equidistant projection)来正确地显示...

    全国行政区域边界数据(jsondata),基于百度地图省、市、区县三级数据下钻

    全国行政区域边界数据是地理信息系统(GIS)领域中的重要组成部分,尤其在地图开发、数据分析、地理定位等应用中不可或缺。本资源提供了基于百度地图开放平台的省、市、区县三级详细数据,非常适合用于构建可交互的...

    墨卡托投影与经纬度转换源代码及原理文献

    3. X和Y可能需要根据投影区域的中心经线进行调整,以便在最终的地图上正确定位。 反过来,从墨卡托投影到经纬度的转换则涉及到反向的计算,通常包括: 1. 计算反余弦(Y / R)以得到φ。 2. 将X除以R得到λ。 3. 将λ...

    OpenLayers Debug测试JS

    OpenLayers 是一个开源的JavaScript库,专为在Web上创建交互式地图应用而设计。它支持多种地图数据源,包括WMS、WFS、TMS等,并提供了丰富的地图操作功能,如缩放、平移、图层管理等。`OpenLayers.debug.js`是...

    js仿百度地图放大缩小拖拽查看效果

    地图是通过经纬度坐标系统来定位地球表面的点,而Web上的地图通常是通过切片(tiles)技术来实现的,即将地图分割成多个小块图片,根据用户的缩放级别加载相应的切片,以实现平滑的缩放和拖动效果。 **拖拽效果:**...

    js实现自己的网页地图可添加自己的标准和事件

    在JavaScript(js)中实现自己的网页地图功能,不仅可以提供一种个性化的方式来展示地理位置信息,还能让用户在地图上自由地添加和操作各种自定义元素,如建筑标志。这种技术在Web开发中有着广泛的应用,例如在房...

    天地图路网 + 标注瓦片(0-10级)

    4. 用户交互:实现缩放、平移、定位等功能,使用户能够自由浏览地图。 5. API集成:如果需要提供额外的服务,如地址搜索、路线规划,可以考虑集成天地图或其他地图服务商的API。 总的来说,“天地图路网 + 标注瓦片...

    js 地图查看 完整版

    在地图查看的场景中,JavaScript扮演着至关重要的角色,它可以实现动态交互、数据可视化以及地理定位等功能,使得用户能够便捷地浏览、搜索和操作地图。 在“js 地图查看 完整版”项目中,我们通常会涉及到以下几个...

    Js地图热点,选择和鼠标滑过变色特效。

    JavaScript 地图热点技术是一种在网页上展示地理信息并实现交互功能的方法。在这个场景中,"Js地图热点,选择和鼠标滑过变色特效" 主要涉及到JavaScript编程语言以及地图热点(hotspots)的概念,这些热点通常是地图...

    一个不错的js地图效果

    在地图效果中,可能需要遍历地图上的所有区域,并为每个区域添加事件监听器。 4. **地理信息系统(GIS)和坐标系统**:地图通常基于特定的坐标系统,如经纬度。理解GIS原理可以帮助精确地定位和展示地图区域。...

    tianjin.zip_天津地图_天津地图json

    例如,开发者可以利用这些JSON数据与前端库(如Leaflet、OpenLayers或D3.js)结合,实现地图的展示、缩放、拖动等功能,并能突出显示特定区域、搜索位置、导航路线等。同时,这些数据也可以服务于数据分析和城市规划...

    广东省各市区(无街道)地图SVG可接入程序调用

    - **分层处理**:地图被分成不同的层,每层代表一个或多个市区,这样可以根据需要加载或隐藏特定层,实现地图的精细化控制。 - **连坐标系统**:地图中的每个SVG元素都有精确的坐标,确保了地理位置的准确性,可以...

    离线BD瓦片地图加载.zip

    离线BD瓦片地图加载是一个针对地图应用的重要技术,它允许用户在没有网络连接的情况下查看和操作地图。这种技术在户外活动、导航、地理信息系统(GIS)等领域有着广泛的应用。本示例通过一个名为"map.html"的网页...

    离线瓦片图下载器(谷歌/百度/高德/腾讯)

    - **设定下载范围**:用户指定需要下载的地图区域,这通常通过设置经纬度范围和Zoom级别来实现。 - **启动下载**:下载器根据设定的参数,向地图服务发起请求,获取对应瓦片的图片数据,并将其保存为本地文件。 -...

    百度地图瓦片

    通过下载特定区域的瓦片,用户可以保存地图数据在本地,便于在户外、无网络或低质量网络环境中使用。 4. **HTML地图实现**:在HTML环境下展示百度地图,通常涉及到JavaScript库,如百度地图API。这个API提供了创建...

    地图瓦片生成器.rar

    8. **地图瓦片API**:开发Web应用时,可以使用JavaScript库如Leaflet或OpenLayers,它们提供了与地图瓦片服务交互的接口,使得在网页上轻松集成地图瓦片成为可能。 9. **地图瓦片的应用**:地图瓦片广泛应用于导航...

Global site tag (gtag.js) - Google Analytics