`

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开发中有着广泛的应用,例如在房...

    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. **地图瓦片的应用**:地图瓦片广泛应用于导航...

    地图练习

    在IT行业中,地图练习通常指的是使用编程语言处理地图数据或者实现地图相关功能的实践。这里的“MapPractice”可能是一个项目或教程,旨在帮助开发者更好地理解和应用地图操作。在这个压缩包中,很可能包含了实现...

Global site tag (gtag.js) - Google Analytics