今天我们来进行矢量图标的加载

关键代码

有一个比较注意的点就是,图片路径必须引入不能直接写路径,我找半天也没发现问题所在

 let anchorLayer=new VectorLayer({
source: new VectorSource(),
});
let anchorFeatures=new Feature({
geometry: new Point(center),
})
  //重点,需要引入才行,不能在src上写路径
const iconSrc = require('./image.png');
anchorFeatures.setStyle(new Style({
image: new Icon({
src: iconSrc,
}),
}))
anchorLayer.getSource().addFeature(anchorFeatures);
map.addLayer(anchorLayer)

效果图(图片是有点大了,不过原理是这个原理,真正开发中的话让ui把图做小点)

完整代码

<script setup>
import { onMounted, reactive, ref } from "vue";
import { Feature, Map, View } from "ol";
import TileLayer from "ol/layer/Tile";
import { OSM, XYZ } from "ol/source";
import { fromLonLat } from "ol/proj";
import VectorLayer from "ol/layer/Vector";
import VectorSource from "ol/source/Vector";
import GeoJSON from "ol/format/GeoJSON";
import Style from "ol/style/Style";
import Fill from "ol/style/Fill";
import Stroke from "ol/style/Stroke";
import Icon from "ol/style/Icon";
import { Point } from "ol/geom"; defineProps({
msg: String,
});
let map = reactive({});
let view = reactive({});
// let count=ref(0)
// let center=[114.305469, 30.592876];
let center=reactive([114.305469, 30.592876]);
onMounted(() => {
initMap();
});
let initMap = () => {
(view = new View({
center ,
zoom: 5,
projection: "EPSG:4326",
})),
(map = new Map({
target: "map", //挂载视图的容器
layers: [
//瓦片图层source第三方,或者自带的,地图的底层
new TileLayer({
// source: new OSM(),//内置的国外地址,需要代理
source: new XYZ({
url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7",
}), //国内第三方数据源
}),
// 矢量图层
new VectorLayer({
source: new VectorSource({
url: "https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json",
format: new GeoJSON(),
}),
//填充颜色
style: new Style({
fill: new Fill({
color: "rgba(255, 0, 0, 0.5)",
}),
stroke: new Stroke({
color: "black",
width: 1,
})
}),
}),
], //视图
view: view,
})); let anchorLayer=new VectorLayer({
source: new VectorSource(),
});
let anchorFeatures=new Feature({
geometry: new Point(center),
})
const iconSrc = require('./image.png');
anchorFeatures.setStyle(new Style({
image: new Icon({
src: iconSrc,
}),
}))
anchorLayer.getSource().addFeature(anchorFeatures);
map.addLayer(anchorLayer) };
let move = () => {
// 设置北京的经纬度
const beijing = [116.46, 39.92];
const view = map.getView();
view.animate({
center: beijing,
zoom: 10,
projection: "EPSG:4356",
});
};
</script> <template>
<div id="map">
<div class="btns">
</div>
</div>
</template> <style scoped>
.btns {
display: flex;
position: fixed;
left: 20px;
bottom: 20px; z-index: 999;
}
.btns div {
width: 100px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.read-the-docs {
color: #888;
}
#map {
margin: 0;
width: 100vw;
height: 100vh;
}
</style>

前端学习openLayers配合vue3(加载矢量图标)的更多相关文章

  1. 《前端之路》之 前端图片 类型 & 优化 & 预加载 & 懒加载 & 骨架屏

    目录 09: 前端图片 类型 & 优化 & 预加载 & 懒加载 & 骨架屏 09: 前端图片 类型 & 优化 & 预加载 & 懒加载 & ...

  2. Jquery前端分页插件pagination同步加载和异步加载

    上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...

  3. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  4. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

  5. thinkphp学习笔记9—自动加载

    原文:thinkphp学习笔记9-自动加载 1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\ ...

  6. 微信小程序:添加全局的正在加载中图标效果

    在发送请求的时候,显示一个正在加载中的小图标.在加载下一页的时候也显示正在加载中.同时数据请求回来了,把加载中进行关闭. 开发----API-----界面 在哪里添加这两段代码会比较方便呢?一个项目有 ...

  7. 前端性能优化--图片懒加载(lazyload image)

    话说前头: 上次写了一篇webpack的学习心得,webpack能做到提升前端的性能,其模块打包最终生成一个或少量的文件能够减少对服务端的请求.除此之外,本次的图片懒加载(当然不仅限于图片,还可以有视 ...

  8. webpack学习笔记--按需加载

    为什么需要按需加载 随着互联网的发展,一个网页需要承载的功能越来越多. 对于采用单页应用作为前端架构的网站来说,会面临着一个网页需要加载的代码量很大的问题,因为许多功能都集中的做到了一个 HTML 里 ...

  9. Web前端性能优化——提高页面加载速度

    前言:  在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒, ...

  10. (转)Openlayers 2.X加载高德地图

    http://blog.csdn.net/gisshixisheng/article/details/44853881 概述: 前面的有篇文章介绍了Openlayers 2.X下加载天地图,本节介绍O ...

随机推荐

  1. DRF-Version组件源码分析

    1. 版本管理组件源码分析 注意点: 不同的versioning_class区别:实例化后得到的对象versioning_scheme里面的方法不同(函数同名,但是处理逻辑不同) def determ ...

  2. 教你删除Linux中这些因特殊字符命名无法删除的文件

    我们都知道,在Linux删除一个文件可以使用rm命令,但是有一些特殊名称的文件使用普通的rm方式却没法删除,本文介绍Linux中删除特殊名称文件的多种方式. Linux文件命名规则 在介绍之前,简单说 ...

  3. 用MySQL5.7的客户端连接MySQL8.0的服务端竟然报错,不是说好向下兼容吗?

    在默认条件下,用MySQL5.7的客户端连接MySQL8.0的服务端竟然报错,不是说好向下兼容吗? WHAT?报错如下:[root@node234 ~]# mysql -ushukuinfo -p'1 ...

  4. Java 日志缓存机制的实现

    本文介绍了 Java 日志机制,并通过扩展日志功能,实现日志缓存.同时,可以动态控制日志信息打印到日志文件的级别,从而提高了日志的灵活性,给产品质量带来更大的帮助.文章主要围绕 MemoryHandl ...

  5. go官方包依赖管理工具之mod

    1.1.go mod是什么 go mod 是Golang 1.11 版本引入的官方包(package)依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理. 之前Golang ...

  6. Educational Codeforces Round 65 (Rated for Div

    D - Bicolored RBS 给定一个括号序列,现在你必须对每一个括号涂成蓝色或红色,要求使得涂完后的红色括号和蓝色括号序列都必须是合法的括号序列,设红色括号形成的的括号序列的深度为\(dep_ ...

  7. LGR-204-Div.2

    Contest link 质量不错的比赛. A 比较明显的题,贪心往下做就可以. #include <bits/stdc++.h> using i64 = long long; const ...

  8. FCM发送测试消息(控制台和postman)

    方法1 在firebase控制台新建通知 点击cloud messaging后点击新建通知 输入标题和内容,点击右边的发送测试消息,注意要在真机接收,模拟器收不到 然后添加测试令牌,测试令牌可以在ap ...

  9. 中电金信通过KCSP认证 云原生能力获权威认可

    ​ 中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商. ​ Ku ...

  10. 【pygame】Python小游戏开发之看代码学编程

    话说我学习的时候,英文文档难以理解,中文文档杂乱无章,最终还是觉得,还不如直接看代码学习. 下面是我学习过程中写的代码,注释写的很详细,我想会帮助你理解的 pip install pygame 1.游 ...