昨天完成了在页面上展现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的理解有限,实现方法可能不是最佳的,请谅解。
分享到:
相关推荐
13. **鼠标坐标**:OpenLayers可以实时显示鼠标在地图上的经纬度坐标,这对于地理定位和测量很有帮助。 14. **标签**:在地图上添加标签可以提供额外的信息,例如对地点或特征的命名。OpenLayers支持动态创建和更新...
OpenLayers 是一个强大的开源JavaScript库,专为在Web上创建交互式地图应用而设计。它支持多种地图数据源,包括WMS、WFS、TMS等,并提供了丰富的地图操作功能,如缩放、平移、图层管理和地理定位。这份离线文档包含...
通过对所提供的文件信息进行分析,我们可以看出作者在解决OpenLayers面积计算不准确的问题上,采用了基于球面几何原理的方法,并且实现了较为详细的JavaScript函数`calcArea`。这种方法不仅有助于提高面积计算的准确...
这种功能通常通过JavaScript的GIS库实现,如OpenLayers或Leaflet,它们可以与天地图的API结合,获取地图交互事件,并将鼠标点击位置转换为经纬度坐标。 实现这一功能的关键步骤包括: 1. 引入GIS库:在HTML中引入...
在OpenLayers中,显示北极地区的地图需要特殊处理,因为常规的经纬度坐标系(WGS84)在极地区域可能会出现扭曲。本教程将详细解释如何利用OpenLayers的方位坐标系(Azimuthal Equidistant projection)来正确地显示...
全国行政区域边界数据是地理信息系统(GIS)领域中的重要组成部分,尤其在地图开发、数据分析、地理定位等应用中不可或缺。本资源提供了基于百度地图开放平台的省、市、区县三级详细数据,非常适合用于构建可交互的...
3. X和Y可能需要根据投影区域的中心经线进行调整,以便在最终的地图上正确定位。 反过来,从墨卡托投影到经纬度的转换则涉及到反向的计算,通常包括: 1. 计算反余弦(Y / R)以得到φ。 2. 将X除以R得到λ。 3. 将λ...
OpenLayers 是一个开源的JavaScript库,专为在Web上创建交互式地图应用而设计。它支持多种地图数据源,包括WMS、WFS、TMS等,并提供了丰富的地图操作功能,如缩放、平移、图层管理等。`OpenLayers.debug.js`是...
地图是通过经纬度坐标系统来定位地球表面的点,而Web上的地图通常是通过切片(tiles)技术来实现的,即将地图分割成多个小块图片,根据用户的缩放级别加载相应的切片,以实现平滑的缩放和拖动效果。 **拖拽效果:**...
在JavaScript(js)中实现自己的网页地图功能,不仅可以提供一种个性化的方式来展示地理位置信息,还能让用户在地图上自由地添加和操作各种自定义元素,如建筑标志。这种技术在Web开发中有着广泛的应用,例如在房...
4. 用户交互:实现缩放、平移、定位等功能,使用户能够自由浏览地图。 5. API集成:如果需要提供额外的服务,如地址搜索、路线规划,可以考虑集成天地图或其他地图服务商的API。 总的来说,“天地图路网 + 标注瓦片...
在地图查看的场景中,JavaScript扮演着至关重要的角色,它可以实现动态交互、数据可视化以及地理定位等功能,使得用户能够便捷地浏览、搜索和操作地图。 在“js 地图查看 完整版”项目中,我们通常会涉及到以下几个...
JavaScript 地图热点技术是一种在网页上展示地理信息并实现交互功能的方法。在这个场景中,"Js地图热点,选择和鼠标滑过变色特效" 主要涉及到JavaScript编程语言以及地图热点(hotspots)的概念,这些热点通常是地图...
在地图效果中,可能需要遍历地图上的所有区域,并为每个区域添加事件监听器。 4. **地理信息系统(GIS)和坐标系统**:地图通常基于特定的坐标系统,如经纬度。理解GIS原理可以帮助精确地定位和展示地图区域。...
例如,开发者可以利用这些JSON数据与前端库(如Leaflet、OpenLayers或D3.js)结合,实现地图的展示、缩放、拖动等功能,并能突出显示特定区域、搜索位置、导航路线等。同时,这些数据也可以服务于数据分析和城市规划...
- **分层处理**:地图被分成不同的层,每层代表一个或多个市区,这样可以根据需要加载或隐藏特定层,实现地图的精细化控制。 - **连坐标系统**:地图中的每个SVG元素都有精确的坐标,确保了地理位置的准确性,可以...
离线BD瓦片地图加载是一个针对地图应用的重要技术,它允许用户在没有网络连接的情况下查看和操作地图。这种技术在户外活动、导航、地理信息系统(GIS)等领域有着广泛的应用。本示例通过一个名为"map.html"的网页...
- **设定下载范围**:用户指定需要下载的地图区域,这通常通过设置经纬度范围和Zoom级别来实现。 - **启动下载**:下载器根据设定的参数,向地图服务发起请求,获取对应瓦片的图片数据,并将其保存为本地文件。 -...
通过下载特定区域的瓦片,用户可以保存地图数据在本地,便于在户外、无网络或低质量网络环境中使用。 4. **HTML地图实现**:在HTML环境下展示百度地图,通常涉及到JavaScript库,如百度地图API。这个API提供了创建...
8. **地图瓦片API**:开发Web应用时,可以使用JavaScript库如Leaflet或OpenLayers,它们提供了与地图瓦片服务交互的接口,使得在网页上轻松集成地图瓦片成为可能。 9. **地图瓦片的应用**:地图瓦片广泛应用于导航...