openlayers3地图搭建

最近搭建内网地图用到前端openlayer框架,以杭州萧山经纬度作为示例:

openlayers地图搭建步骤:

1. 开地图服务(这里用的是arcgis做的地图服务)

2. 确定瓦片地图的坐标系,瓦片地图名称(需要和地图服务里的对应),服务位置,比例尺,代码如下

//坐标系
var gridsetName = 'EPSG:4326'
// 瓦片地图的名称,需要和地图服务里的相同
var gridNames = [ 'EPSG:4326:11', 'EPSG:4326:12', 'EPSG:4326:13','EPSG:4326:14', 'EPSG:4326:15', 'EPSG:4326:16', 'EPSG:4326:17' ]
// 地图服务url,当初用的是wms,这次改用了wmts,写法不太一样,导致开始搭建不起来
var baseUrl = 'http://127.0.0.1:8090/geoserver/gwc/service/wmts'
var style = ''
var format = 'image/png'
var layerName = 'hz_xs:hz_xs'
var projection = new ol.proj.Projection({
	code : 'EPSG:4326',
	units : 'degrees',
	axisOrientation : 'neu'
})
// 比例尺数组,这个跟arcgis切图出来的比例尺要匹配
var resolutions=
[0.0003433227539062,0.0001716613769531,0.0000858306884766,0.0000429153442383,0.0000214576721191,0.0000107288360596, 0.0000053644180298 ]
var baseParams = [ 'VERSION', 'LAYER', 'STYLE', 'TILEMATRIX','TILEMATRIXSET', 'SERVICE', 'FORMAT' ]
var params = {
	'VERSION' : '1.0.0',
	'LAYER' : layerName,
	'STYLE' : style,
	'TILEMATRIX' : gridNames,
	'TILEMATRIXSET' : gridsetName,
	'SERVICE' : 'WMTS',
	'FORMAT' : format
}
var url = baseUrl + '?'
for ( var param in params) {
	if (baseParams.indexOf(param.toUpperCase()) < 0) {
		url = url + param + '=' + params[param] + '&'
	}
}
url = url.slice(0, -1)
var source = new ol.source.WMTS({
	url : url,
	layer : params['LAYER'],
	matrixSet : params['TILEMATRIXSET'],
	format : params['FORMAT'],
	projection : projection,
	tileGrid : new ol.tilegrid.WMTS({
		tileSize : [ 256, 256 ],
		extent : [ -180.0, -90.0, 180, 90 ],
		origin : [ -180, 90 ],
		resolutions : resolutions,
		matrixIds : params['TILEMATRIX']
	}),
	style : params['STYLE'],
	wrapX : true
})
var layer = new ol.layer.Tile({
	source : source
})

3. 添加地图视图、图层、控件等,代码如下

var view = new ol.View({
	center : [120.32245,30.32021 ],
	projection : projection,
	zoom : 10,
	minZoom : 10,
	maxZoom : 16
})
// 动态矢量层,点、线都绘制到该图层
var vectorSource = new ol.source.Vector({
	projection : 'EPSG:4326',
	format : new ol.format.GeoJSON({
		extractStyles : false
	})
})
var styleFunction = function(feature) {
	return styles[feature.getGeometry().getType()]
}
var vectorLayer = new ol.layer.Vector({
	source : vectorSource,
	style : styleFunction
})
// 加一个Logo
var logoElement = document.createElement('a')
var logoImage = document.createElement('img')
logoImage.src = './openlayers/images/logo.png'
logoElement.appendChild(logoImage)
var map = new ol.Map({
	controls : ol.control.defaults({attribution : false}).extend([ 
                new ol.control.ScaleLine({units : 'metric'}), 
		new ol.control.Attribution({collapsible : true}), 
		new ol.control.ZoomSlider()
	]),
	layers : [ layer, vectorLayer ],
	target : 'map',
	view : view,
	logo : logoElement
})
// 地图初始时显示比例,包含左上和右下的点
map.getView().fit([120.0608254790039,30.35848617553711,120.40140151977539,30.17343521118164], map.getSize())


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue3是最新版本的Vue.js框架,是一种现代的JavaScript框架,用于构建交互式和响应式的应用程序。OpenLayers是一个很受欢迎的用于Web地图应用程序的JavaScript库。 Vue3和OpenLayers两者结合使用可以创建出高级的Web地图应用程序,因为Vue3拥有丰富的生态系统和丰富的组件库,能够轻松地集成OpenLayers的功能和样式。Vue3非常适合用于开发Web应用程序,因为它提供了许多工具和功能来优化应用程序的性能和开发体验。 通过Vue3,您可以轻松地将OpenLayers与其他Vue组件集成在一起,以创建具有高级功能和交互性的地图应用程序。Vue3的响应式数据绑定特性可以轻松地更新OpenLayers的图层和标记等地图元素。Vue3还提供了一种方便的方法来管理地图事件,您可以方便地为每个地图事件创建自定义处理程序和生命周期钩子。 总之,Vue3和OpenLayers的结合使用可以为您带来一个强大的Web地图应用程序框架,提高开发和设计的效率,并在可扩展性和性能方面提供更好的解决方案。 ### 回答2: Vue3是一种现代web应用程序框架,可以用于构建基于数据驱动的单页面应用程序。OpenLayers则是一种开源JavaScript库,用于在Web上呈现交互式地图和地理空间数据。 Vue3和OpenLayers的结合可以为开发人员提供一种强大的工具,用于构建可视化地图和地理空间数据的应用程序。Vue3可以通过其组件系统便于地组织代码和数据,并且可以使用其响应式数据绑定来更新UI。OpenLayers可以允许开发人员轻松地创建交互式地图,并使用其丰富的API来操作地图的样式和数据。 与以前版本的Vue相比,Vue3的主要优势是其重新设计的响应式API。Vue3的响应式API更加高效和灵活,使得开发人员可以更轻松地处理大量数据的更改。在开发地图应用程序时,这非常重要,因为大量的地理空间数据会随时间而变化。Vue3的新特性还包括更简单的编译器、更好的渲染性能和更好的TypeScript支持。 熟练使用Vue3和OpenLayers可以使开发人员轻松构建功能强大且可定制的地图应用程序。使用组件化的方法来管理应用程序代码,可以使应用程序更容易维护和扩展。OpenLayers强大的功能可以使开发人员制定定制的地图风格和数据显示,从而为用户提供更丰富的交互体验。总而言之,Vue3和OpenLayers的结合是开发地图应用程序的绝佳选择。 ### 回答3: Vue3-OpenLayers是基于Vue3框架的客户端Web地图库。该库结合了Vue3的响应式数据流和OpenLayers的强大地图功能,提供了一个简单易用、灵活可定制的地图开发框架。通过Vue3-OpenLayers,开发者可以较为轻松地搭建起自己的地图应用,实现各种地图需求。 Vue3-OpenLayers库的主要特点包括: 1. 基于Vue3响应式系统,便于数据更新和管理; 2. 提供了完整的OpenLayers组件库,如地图、图层、控件、交互等,方便使用; 3. 支持灵活的地图样式配置和自定义功能开发; 4. 支持OpenLayers的各种地图源,如瓦片图、WMS、WMTS等等。 Vue3-OpenLayers库的使用对于有Vue3开发经验的开发者而言较为友好,借助Vue3的响应式能力,实现地图数据和业务逻辑的跟随变化响应,并且组件化的设计模式方便了多层级嵌套的地图应用开发。同时,开发者还可以利用Vue3提供的组件化构建特性,设计出符合自己需求的定制化地图组件。 总之,Vue3-OpenLayers是一款强大的地图库,它将Vue3和OpenLayers优势结合起来,为地图应用开发者提供了更为简单、灵活的地图开发解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值