javascript - 使用 OpenLayers 在 OSM 中显示自定义本地镜像标记

标签 javascript angular gis openlayers openstreetmap

我已按照本文中有关如何将自定义图像显示为标记的教程进行操作:https://medium.com/attentive-ai/working-with-openlayers-4-part-3-setting-customised-markers-and-images-on-map-da3369a81941

但是,当使用我自己的本地项目结构引用我的 png 图像时,它不会在 map 上渲染。

这是我当前的代码:

var aPoint = new ol.geom.Point(ol.proj.fromLonLat([0, 0]))
var aFeature = new ol.Feature({
  geometry: aPoint
})
var aFeatureStyle = new ol.style.Style({
  image: new ol.style.Icon({
    //src: 'https://upload.wikimedia.org/wikipedia/commons/2/2a/Dot.png'
    src: '../../../dott.png'
  })
})
aFeature.setStyle(aFeatureStyle)
var aSource = new ol.source.Vector({
  features: [aFeature]
})
var aLayer = new ol.layer.Vector({
  source: aSource
})



var map = new ol.Map({
    target: 'map',
    layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM(),
        }),
        aLayer
    ],
    view: new ol.View({
        center: ol.proj.fromLonLat([0, 0]),
        zoom: 14
    })
})

使用 src 时:' https://upload.wikimedia.org/wikipedia/commons/2/2a/Dot.png ' 变体,显示所需的点,但是当使用 src: '../../../dott.png' 不显示任何标记。

我确实指定了本地 png 文件的正确路径,所以我不知道为什么此代码不起作用。

我正在使用 Angular 框架并使用 Node 在本地开发服务器上运行它。

最佳答案

所以我终于弄清楚了,我觉得我应该早点知道这一点,但由于我是 Angular 的新手,所以我没有立即发现它。

任何需要在 Angular 源代码中引用的图像都需要位于 Angular 项目结构中的 src/assets/images 文件夹中。然后,通过将路径指定为 src: '../assets/images/Dot.png',图像将成功加载,并显示 200 OK 响应,如浏览器开发人员工具的“网络”选项卡中所示。

关于javascript - 使用 OpenLayers 在 OSM 中显示自定义本地镜像标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56326745/

相关文章:

angular - NgRX store select 返回存储状态而不是数据

postgresql - 如何将线串的起点和终点顶点对齐到最近的点?

php - 寻找 Jenks 优化——数据分类

javascript - 无法动态构建 svg 路径 react native

javascript - 如何防止通过单击 mat-expansion-panel-header 来切换 mat-expansion-panel?

javascript - 如何在开发html/js/css时进行MVC?

angular - Safari 忽略 Angular 动画计时功能

r - 如何使用 R sf 包从底层网格裁剪多边形?

javascript - 从 pixi 到 p2 的 Sprite 边界多边形

javascript - ajax调用不会同步执行