Hello Openlayers4

本文介绍如何使用OpenLayers 4加载本地谷歌地形瓦片地图。通过JavaScript实现地图展示,设置地图中心、缩放级别及显示范围,并提供了一个包含水印的地图展示效果实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、最近在学习openlayers4,ol4是一个用JavaScript写的框架,可以非常简短的展示数据和地图,下面是利用ol4来加载本地谷歌瓦片地图的demo

<!DOCTYPE html>

<html>
<head>
<title>Hello Openlayers4</title>
<link rel="stylesheet" href="E:/test/base/ol.css">    <!--引入openlayers样式-->
<script type="text/javascript" src="E:/test/base/ol.js"></script>   <!--引入openlayers框架-->
</head>
<body>
<div id="map"></div><!-- 地图存放的容器 -->
</body>
</html>
<script>
//加载离线谷歌地形图
var layer = new ol.layer.Tile({
    source: new ol.source.XYZ({
        projection: 'EPSG:3857', //投影信息
        tileUrlFunction: function(tileCoord) {
            var z = tileCoord[0];
            var x = tileCoord[1]; //行号
            var y = -tileCoord[2] - 1; //列号
            return 'E:/test/terrain/' + z + '/' + x + '/' + y + '.jpg';//瓦片本地路径
        }
    })
})

var map = new ol.Map({
    target: 'map', //地图的目标容器
    layers: [layer], //地图图层
    view: new ol.View({ //视图
        center:  [12682701.385696592, 2575190.164131687],    //地图中心
        zoom: 15,   //地图初始化瓦片层级
        minZoom: 10, //最小瓦片层级
        maxZoom: 20, //最大瓦片层级
        extent: [12681701.385696592, 2575090.164131687,12683701.385696592, 2575290.164131687]  //设置地图的地图拖动区域,左下角和右上角的坐标
    })
});

</script>

二、下图是地图的展示效果(由于下载适用的瓦片,所以带有水印)



### OpenLayers 文本样式示例与使用方法 在 OpenLayers 中,可以通过 `Style` 类及其子类来定义矢量要素的外观。对于文本样式的设置,主要通过 `Text` 类实现。以下是详细的说明和代码示例。 #### 创建带有文本标签的地图要素 要向地图上的某个位置添加文本标签,可以利用 `ol/style/Text` 来定义文本样式,并将其应用到矢量图层中的几何对象上。下面是一个完整的示例: ```javascript import 'ol/ol.css'; import { Map, View } from 'ol'; import TileLayer from 'ol/layer/Tile'; import VectorLayer from 'ol/layer/Vector'; import OSM from 'ol/source.OSM'; import VectorSource from 'ol/source/Vector'; import Point from 'ol/geom/Point'; import Feature from 'ol/Feature'; import Style from 'ol/style/Style'; import Text from 'ol/style/Text'; // 初始化地图视图 const map = new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }) // 添加OSM底图 ], view: new View({ center: [0, 0], zoom: 2, }), }); // 定义一个带坐标的点特征 const pointFeature = new Feature(new Point([0, 0])); // 设置文本样式 pointFeature.setStyle( new Style({ text: new Text({ text: 'Hello OpenLayers!', // 显示的文字内容 font: 'bold 18px Arial', // 字体大小和字体族 fill: new Fill({ color: '#ffcc33' }), // 填充颜色 stroke: new Stroke({ color: '#3399CC', width: 3 }), // 边框颜色和宽度 offsetX: 10, // X轴偏移量 (像素) offsetY: -20, // Y轴偏移量 (像素) }), }) ); // 将特征添加到矢量源中 const vectorSource = new VectorSource(); vectorSource.addFeature(pointFeature); // 创建矢量图层并将矢量源绑定到该图层 const vectorLayer = new VectorLayer({ source: vectorSource, }); map.addLayer(vectorLayer); ``` 上述代码展示了如何在一个指定坐标处绘制一个点,并为其附加一段文字描述[^1]。其中的关键部分在于 `text` 属性下的配置项,这些选项允许开发者自定义字体、填充色、边线以及其他视觉效果。 #### 动态调整文本样式 如果希望基于某些条件动态改变文本的表现形式,则可以在运行时更新对应的 style 对象。例如,在鼠标悬停事件触发时更改字体粗细或者背景透明度等参数[^4]。 #### WebGL 图层支持情况 需要注意的是,虽然常规矢量渲染器能够很好地处理这种类型的标注操作,但如果切换至更高效的 WebGL 渲染模式下(比如使用 `WebGLPointsLayer`),则可能需要额外考虑兼容性和性能优化问题[^2]。因为并非所有的标准 API 都能在 WebGL 上得到完全的支持。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值