angular - 显示标签并从地图中删除标记
问题描述
我在我的 Angular 6 应用程序中使用 openStreetMap,如下所示。向地图添加标记可以正常工作,但如果单击它不起作用,则显示标记的标签,实际上我不知道为什么。另外,我不知道如何删除此标记或单击单击标记时如何发送事件。有没有人暗示我该怎么做 - 我尝试了很多但没有成功。
ngOnInit() {
this.map = new ol.Map({
target: 'map',
controls: ol.control.defaults({
attributionOptions: {
collapsible: false
}
}),
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat([this.latitude, this.longitude]),
zoom: 10
})
});
var that = this;
this.map.on('dblclick', function (args) {
var lonlat = ol.proj.transform(args.coordinate, 'EPSG:3857', 'EPSG:4326');
var lon = lonlat[0];
var lat = lonlat[1];
const feature1 = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([lon, lat])),
labelPoint: new ol.geom.Point(ol.proj.fromLonLat([lon, lat])),
sname: 'My Marker 1'
});
const feature2 = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([lon+1, lat+1])),
labelPoint: new ol.geom.Point(ol.proj.fromLonLat([lon+1, lat+1])),
sname: 'My Marker 2'
});
let features = [];
features.push(feature1);
features.push(feature2);
var layer = new ol.layer.Vector({
source: new ol.source.Vector({
features: features
}),
style: new ol.style.Style({
image: new ol.style.Icon({
anchor: [0.5, 0.5],
anchorXUnits: "fraction",
anchorYUnits: "fraction",
src: "assets/img/marker.png"
})
})
});
that.map.addLayer(layer);
});
}
解决方案
您将需要几个功能来实现您的目标,
- 对于选择您可以使用的功能
ol/interaction/Select
,基本上让您在地图上捕获您选择的事件(单击、单击等),并让您在事件选择源的功能时进行监听。链接: OL API - 选择, OL 示例 - 选择功能 - 对于您需要使用的信息弹出
ol/overlay
窗口,是绑定到地图中某个位置的小部件。链接: OL API - 覆盖, OL 示例 - 图标符号器
推荐阅读
- html - 在段落中使用列表后删除换行符
- javascript - 对象中的 JavaScript 位置属性访问
- excel-formula - 最小 3 个值的平均值导致 Err539
- google-bigquery - 在 google bigquery 中添加带条件的值
- r - Matlab函数转换为R
- java-8 - 无法使用枚举过滤元素
- java - 无法通过 jenkins 上的 chrome webdriver 启动 chrome,因为它在我的本地机器上运行良好
- c# - C#:有没有办法阻止随机数在显示后再次生成
- php - Laravel 验证规则自定义消息与第二级数组
- office-js - 离线模式下的office-js插件