- 浏览: 197544 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lisafx:
...
word文件转换为html文件等 -
glang010:
openlayer调用geoserver发布的地图实现地图的基本功能 -
w156445045:
请问请问怎么使用google的离线地图文件呢 谢谢。
openlayer调用geoserver发布的地图实现地图的基本功能 -
影非弦:
我最近也正在学习GIS,但是不知道在哪找地图资源
openlayer调用geoserver发布的地图实现地图的基本功能 -
2321726042:
靠, 我以为你下载包里有CSS样式,既然没有,晕喔 还等 了一 ...
openlayer调用geoserver发布的地图实现地图的基本功能
主要实现的功能有放大,缩小,获取地图大小,平移,线路测量,面积测量,拉宽功能,显示标注,移除标注,画多边形获取经纬度坐标。根据经纬度坐标显示多边形。地图切换,图层控制等功能
根据经纬度坐标串显示多边形代码如下 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OpenLayers map preview</title>
<!-- Import OL CSS, auto import does not work with our minified OL.js build -->
<link rel="stylesheet" type="text/css" href="../theme/default/style.css"/>
<link rel="stylesheet" href="../theme/default/google.css" type="text/css">
<!-- Basic CSS definitions -->
<style type="text/css">
/* General settings */
body {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: small;
}
/* Toolbar styles */
#toolbar {
position: relative;
padding-bottom: 0.5em;
}
/* The map and the location bar */
#map {
clear: both;
position: relative;
width: 698px;
height: 330px;
border: 1px solid black;
}
#wrapper {
width: 698px;
}
#location {
float: right;
}
/* Styles used by the default GetFeatureInfo output, added to make IE happy */
table.featureInfo, table.featureInfo td, table.featureInfo th {
border: 1px solid #ddd;
border-collapse: collapse;
margin: 0;
padding: 0;
font-size: 90%;
padding: .2em .1em;
}
table.featureInfo th {
padding: .2em .2em;
text-transform: uppercase;
font-weight: bold;
background: #eee;
}
table.featureInfo td {
background: #fff;
}
table.featureInfo tr.odd td {
background: #eee;
}
table.featureInfo caption {
text-align: left;
font-size: 100%;
font-weight: bold;
text-transform: uppercase;
padding: .2em .2em;
}
</style>
<!-- Import OpenLayers, reduced, wms read only version -->
<script src="../lib/OpenLayers.js" ></script>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script defer="defer" type="text/javascript">
var map, measureControls;
var untiled;
var tiled;
function init(){
format = 'image/png';
var bounds = new OpenLayers.Bounds( //地图区域范围
74.137, 6.319,
135.086, 53.558
);
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 0.23808203125,
projection: "EPSG:4610",
numZoomLevels: 7,
units: 'degrees'
};
map = new OpenLayers.Map('map', options);
/**********************加载图层 开始*******************************/
/* tiled = new OpenLayers.Layer.WMS( //图层组
"基础图层", "http://localhost:8080/geoserver/wms",
{
height: '330',
width: '698',
layers: 'sf',
styles: '',
srs: 'EPSG:4326',
format: format,
tiled: 'true',
tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom
},
{
buffer: 0,
displayOutsideMaxExtent: true
}
);*/
var streams = new OpenLayers.Layer.WMS( //图层组
"中国", "http://localhost:8080/geoserver/wms",
{
height: '330',
width: '698',
layers: 'china',
styles: '',
srs: 'EPSG:4610',
format: format,
tiled: 'true',
tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom
},
{
buffer: 0,
displayOutsideMaxExtent: true
}
);
untiled = new OpenLayers.Layer.WMS( //单独图层
"省会", "http://127.0.0.1:8080/geoserver/wms",
{
height: '330',
width: '698',
layers: 'china:provice',
styles: '',
srs: 'EPSG:4610',
transparent: "true",
format: format
},
{singleTile: true, ratio: 1}
);
untiled.setVisibility(false); //设置为不显示
//var gmap = new OpenLayers.Layer.Google("Google Streets", {visibility: false});
/* var dm_wms = new OpenLayers.Layer.WMS( "点图层",
"http://127.0.0.1:8080/geoserver/wms",
{layers: "sf:bugsites,sf:archsites",
transparent: "true", format: "image/png"});*/
map.addLayers([streams,untiled]);
/********************END 加载图层*********************************/
/************************加载一般的基础控件********************************/
map.addControl(new OpenLayers.Control.PanZoomBar({ //添加平移缩放工具条
position: new OpenLayers.Pixel(2, 15)
}));
map.addControl(new OpenLayers.Control.Navigation()); //双击放大,平移
map.addControl(new OpenLayers.Control.Scale($('scale'))); //获取地图比例尺
map.addControl(new OpenLayers.Control.MousePosition({element: $('location')})); //获取鼠标的经纬度
map.setCenter(new OpenLayers.LonLat(100.254, 35.25), 1); //添加平移缩放工具条
map.addControl(new OpenLayers.Control.OverviewMap()); //添加鹰眼图
map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false})); //图层切换工具
map.addControl(new OpenLayers.Control.Permalink('xxxx')); //添加永久链接
//map.addControl(new OpenLayers.Control.MouseToolbar());
//map.zoomToMaxExtent();
var zb=new OpenLayers.Control.ZoomBox({out:true});
var panel = new OpenLayers.Control.Panel({defaultControl: zb});
map.addControl(panel);
/************END************加载一般的基础控件********************************/
/***********************鼠标点击,获取图层数据*******************************/
map.events.register('click', map, function (e) {
document.getElementById('nodelist').innerHTML = "Loading... please wait...";
var params = {
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: map.getExtent().toBBOX(),
X: e.xy.x,
Y: e.xy.y,
INFO_FORMAT: 'text/html',
QUERY_LAYERS: map.layers[0].params.LAYERS,
FEATURE_COUNT: 50,
Layers: 'ok',
Styles: '',
Srs: 'EPSG:4610',
WIDTH: map.size.w,
HEIGHT: map.size.h,
format: format};
OpenLayers.loadURL("http://localhost:8080/geoserver/wms", params, this, setHTML, setHTML);
OpenLayers.Event.stop(e);
});
/**************END*********鼠标点击,获取图层数据*******************************/
/**********************************点、线、面测量开始**********************************************/
var sketchSymbolizers = {
"Point": {
pointRadius: 4,
graphicName: "square",
fillColor: "white",
fillOpacity: 1,
strokeWidth: 1,
strokeOpacity: 1,
strokeColor: "#333333"
},
"Line": {
strokeWidth: 3,
strokeOpacity: 1,
strokeColor: "#666666",
strokeDashstyle: "dash"
},
"Polygon": {
strokeWidth: 2,
strokeOpacity: 1,
strokeColor: "#666666",
fillColor: "white",
fillOpacity: 0.3
}
};
var style = new OpenLayers.Style();
style.addRules([
new OpenLayers.Rule({symbolizer: sketchSymbolizers})
]);
var styleMap = new OpenLayers.StyleMap({"default": style});
measureControls = {
line: new OpenLayers.Control.Measure(
OpenLayers.Handler.Path, {
persist: true,
handlerOptions: {
layerOptions: {styleMap: styleMap}
}
}
),
polygon: new OpenLayers.Control.Measure(
OpenLayers.Handler.Polygon, {
persist: true,
handlerOptions: {
layerOptions: {styleMap: styleMap}
}
}
)
};
var control;
for(var key in measureControls) {
control = measureControls[key];
control.events.on({
"measure": handleMeasurements,
"measurepartial": handleMeasurements
});
map.addControl(control);
}
/***************************END************点,线、面积测量*****************************************/
//添加点标注的图层
markers = new OpenLayers.Layer.Markers("markers");
map.addLayer(markers);
markers.setZIndex(200);
}
//获取面积的结果赋值
function handleMeasurements(event) {
var geometry = event.geometry;
var units = event.units;
var order = event.order;
var measure = event.measure;
var element = document.getElementById('output');
var out = "";
if(order == 1) {
out += "面积为: " + measure.toFixed(3) + " " + units;
} else {
out += "面积为: " + measure.toFixed(3) + " " + units + "<sup>2</" + "sup>";
}
element.innerHTML = out;
}
function setHTML(response){
document.getElementById('nodelist').innerHTML = response.responseText;
};
//缩小
function zoomOut(){
map.zoomOut();
}
//放大
function zoomIn(){
map.zoomIn();
}
//获取地图数据
function getSize(){
alert(map.getSize()+",高度为="+map.getSize().h);
}
//切换鼠标事件功能
function toggleControl(_value) {
for(key in measureControls) {
var control = measureControls[key];
if(_value == key ) {
control.activate();
} else {
control.deactivate();
}
}
}
/*********************拉宽并获取经纬度坐标系*********************************/
function boxExtend(){
var controlBox = new OpenLayers.Control();
OpenLayers.Util.extend(controlBox, {
draw: function () {
this.box = new OpenLayers.Handler.Box( controlBox,
{"done": this.notice},{ "persist": true},
{keyMask:OpenLayers.Handler.MOD_SHIFT });
this.box.activate();
},
notice: function (bounds) {
var ll = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.left, bounds.bottom));
var ur = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.right, bounds.top));
alert(ll.lon.toFixed(4) + ", " +
ll.lat.toFixed(4) + ", " +
ur.lon.toFixed(4) + ", " +
ur.lat.toFixed(4));
}
});
map.addControl(controlBox);
}
var markers,marker;
var markArr=new Array();
function addMarker(){
var url = 'http://www.openlayers.org/dev/img/marker.png';
var sz = new OpenLayers.Size(20, 20); //尺寸大小
var calculateOffset = function(size) {
return new OpenLayers.Pixel(-(size.w/2), -size.h);
};
var icon = new OpenLayers.Icon(url, sz, null, calculateOffset);
marker = new OpenLayers.Marker(new OpenLayers.LonLat(113.34851,33.22630), icon);
markers.addMarker(marker);
// marker = new OpenLayers.Marker(madrid, icon.clone());
// markers.addMarker(marker);
}
function removeMarker() {
markers.removeMarker(marker);
}
/*******************多边形获取经纬度坐标系*************************/
function test(){
var getpolygonxy = new OpenLayers.Control();
OpenLayers.Util.extend(getpolygonxy, {
draw: function() {
this.polygon= new OpenLayers.Handler.Polygon(getpolygonxy ,
{ "done": this.notice },{ "persist": true},
{ keyMask: OpenLayers.Handler.MOD_SHIFT });
this.polygon.activate();
},
notice: function(bounds) {
alert(bounds);//坐标信息
}
});
map.addControl(getpolygonxy);
}
</script>
</head>
<body onload="init()">
<div id="toolbar" style="display:">
<input type="button" value="放大" onclick="zoomIn()"/>
<input type="button" value="缩小" onclick="zoomOut()"/>
<input type="button" value="获取地图大小" onclick="getSize()"/>
<input type="button" value="平移" onclick="toggleControl('none')"/>
<input type="button" value="线路测量" onclick="toggleControl('line')"/>
<input type="button" value="测量面积" onclick="toggleControl('polygon')"/>
<input type="button" value="shift拉框" onclick="boxExtend()"/>
<input type="button" value="显示标注" onclick="addMarker()"/>
<input type="button" value="移除标注" onclick="removeMarker()"/>
<input type="button" value="画多边形获取经纬度坐标" onclick="test()"/>
</div>
<div id="map">
</div>
<div id="wrapper">
<div id="location">经纬度坐标</div>
<div id="scale">
</div>
<div id="output">
</div>
</div>
<div id="xystr"></div>
<div id="nodelist">
<em>Click on the map to get feature info</em>
</div>
</body>
</html>
var vectorLayer = new OpenLayers.Layer.Vector("Simple Geometry", {style:layer_style }); var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); layer_style.fillOpacity = 0.2; layer_style.graphicOpacity =0.2; // create a polygon feature from a linear ring of points var pointList = []; var point1 = new OpenLayers.Geometry.Point(99.480233398438 ,34.892876953125); var point2 = new OpenLayers.Geometry.Point(106.74173535156, 25.96480078125); var point3 = new OpenLayers.Geometry.Point(116.26501660156, 36.6784921875); var point4 = new OpenLayers.Geometry.Point(109.59871972656 , 41.559173828125); var point5 = new OpenLayers.Geometry.Point(99.480233398438,34.892876953125); pointList.push(point1); pointList.push(point2); pointList.push(point3); pointList.push(point4); pointList.push(point5); pointList.push(pointList[0]); var linearRing = new OpenLayers.Geometry.LinearRing(pointList); var polygonFeature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Polygon([linearRing])); map.addLayer(vectorLayer); // map.setCenter(new OpenLayers.LonLat(point.x, point.y), 5); vectorLayer.addFeatures([ polygonFeature]);
根据经纬度坐标窜画多边形,线性等可以参考OpenLayers-2.10\examples 下的vector-features.html代码
- 新建文件夹__2_.rar (10.9 KB)
- 下载次数: 521
评论
发表评论
-
openlayer 添加marker弹出窗口
2011-05-12 16:00 10539var markers,marker,popup; va ... -
google map api ---类GMap2
2010-08-11 09:30 1555class GMap2 对类 GMap2 实例化以创建地图 ... -
Google Maps地图投影全解析
2009-11-04 15:55 3076转载地址:http://www.cnblogs.com/lio ... -
googleAPI的地图基本操作实例
2009-03-13 09:35 2647该实例收集了一些google地图api的基本功能,如放大、缩小 ...
相关推荐
在"openlayer访问geoserver完整Demo"中,我们主要会涉及以下几个关键知识点: 1. **OpenLayers 3**: OpenLayers 3是这个示例的核心,它是一个强大的JavaScript库,允许开发者在网页上显示地图,控制地图交互,以及...
利用openlayers加载geoserver wfs服务发布的矢量图层。
本文将详细介绍如何使用ArcGIS JS API调用三种常见地图服务:Map Service、Feature Service和Image Service,通过具体的Demo来帮助你理解和掌握这些核心概念。 1. Map Service: Map Service是ArcGIS Server提供的...
【标题】:“GeoServer通过REST自动发布PostGIS图层” 【描述】:GeoServer是一款开源的地理信息系统(GIS)服务器,能够将各种地理数据转换为Web地图服务(WMS)和Web地图切片服务(WMTS)。REST...
发布地图无法显示,检查网络请求、服务配置、数据格式是否正确。 WebGIS的OpenGIS规范如WMS、WFS等定义了地图服务的标准接口。 地图以外的区域填充,可通过设置图层的背景图片或使用额外的瓦片图层。 修改...
在本教程中,我们将深入探讨如何使用Leaflet.js库与GeoServer集成,以显示通过WMS(Web Map Service)发布的地图数据。Leaflet是一个轻量级的JavaScript库,专为Web上的交互式地图设计,而GeoServer是一个开源的...
在IT行业中,地理信息系统(GIS)的使用越来越广泛,而GeoServer是一款开源的GIS服务器,它支持多种数据格式,如Shapefile(SHP),用于发布地图服务。本篇将详细介绍如何利用GeoServer发布SHP格式的图层,帮助你更...
通过以上步骤,你可以在OpenLayers地图上同时展示Highcharts的折线图和其他地图层,实现GIS数据的综合展示。在实际应用中,可能还需要处理更多细节,如地图的缩放级别与图表的关联、交互事件的处理等,以达到最佳的...
通过调用iClient的API,我们可以实现更高级的地图操作和自定义功能。 5. **样式处理**:MVT数据本身不包含样式信息,需要通过样式函数来定义如何显示。OpenLayers允许我们使用`ol.style`对象来创建和应用样式。可以...
本教程将深入讲解如何利用Leaflet结合CQL(Common Query Language)来过滤GeoServer发布的图层,使得地图展示更加精细化和定制化。 首先,了解CQL是关键。CQL是一种标准的查询语言,常用于地理信息系统中,允许用户...
GeoWebCache 致力于充当客户端(OpenLayer 或 Google Maps)服务端(GeoServer 或其他 WMS 服务)间的代理。GeoWebCache 将拦截客户端的请求,然后返回缓存过的 Tiles。如果找不到缓存,再调用服务器上的 Tiles,...
在描述中提到,只需修改代码中的URL,就可以实现从本地文件系统加载瓦片或者通过服务器发布。URL模板通常包含层级(zoom)、行列号(x, y)以及可能的扩展名(如.png或.jpg)。例如,一个基本的瓦片URL可能是`/path/...
GeoServer是一款开源的GIS服务器软件,它遵循OGC(Open Geospatial Consortium)标准,提供了丰富的地理空间服务,包括WMS(Web Map Service)、WMTS(Web Map Tile Service)、WFS(Web Feature Service)和WPS...
这个压缩包文件"openlayers_note.rar_openLayer_openlayers"包含了关于OpenLayers的开发笔记,可以帮助我们深入理解这个GIS(地理信息系统)开发工具的核心概念和使用方法。 在"openlayers使用笔记1 从例子开始学习...
我们将重点关注标题中提到的"Leaflet调用wms地图服务"以及描述中的"使用netcore调用wms地图服务"。 首先,让我们了解Leaflet。Leaflet是一个轻量级、高性能的JavaScript库,专门用于创建交互式地图应用。它提供了...
它允许用户发布地图、地理空间数据,并提供API供其他应用调用。 3. **WMTS服务**:WMTS是一种OGC标准,用于分发预渲染的地图瓦片。它通过HTTP请求获取特定坐标系、层级和图块,以提供高效、一致的地图显示。...
Geoserver是一个流行的开源GIS服务器,它可以发布地理空间数据,提供WMS(Web Map Service)和WFS(Web Feature Service)等服务,OpenLayers可以与之配合,使得用户能在浏览器中动态地查看和操作地图数据。...
本文将详细介绍如何使用Mapbox GL对接WMS服务,实现自定义地图服务的功能。 首先,理解Mapbox GL JS的核心概念。Mapbox GL JS基于矢量图层,它可以动态地渲染地图,提供高性能的交互体验。然而,对于不支持矢量数据...
在OpenLayers中,图层(Layer)是地图的基本组成单元,每个图层可以有自己的数据源(Source)和可见性设置。 要实现图层切换控件,我们需要做以下几步: 1. **创建图层**:在示例代码中,我们创建了三个不同的图层...