popup - 将 kml 文件中的信息添加到 Here Maps 中的弹出气泡
问题描述
我有一张地图,上面标有从 kml 文件派生的图标。kml 文件是:
<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Dove.kml</name>
<Style id="Dove6">
<IconStyle id="DoveRIconStyle">
<Icon>
<href>https://wcsb.nz/wellringers/dove6.bmp</href>
</Icon>
</IconStyle>
<LabelStyle>
<color>9fffffff</color>
<scale>0.67</scale>
</LabelStyle>
</Style>
<Placemark>
<name>Ab Kettleby</name>
<styleUrl>#Dove6</styleUrl>
<Point>
<coordinates>-0.92747,52.79858</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Asfordby, Leics, 6, 12cwt, Mon</name>
<styleUrl>#Dove6</styleUrl>
<Point>
<coordinates>-0.95214,52.76339,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
单击图标时,我想在气泡中显示信息。我写的代码是:
const defaultLayers = platform.createDefaultLayers();
const map = new H.Map(document.getElementById('map'),
defaultLayers.vector.normal.map, {
center: { lat: 52.79858, lng: -0.92747 },
zoom: 15,
pixelRatio: window.devicePixelRatio || 1
});
window.addEventListener('resize', () => map.getViewPort().resize());
const behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
const ui = H.ui.UI.createDefault(map, defaultLayers);
let reader = new H.data.kml.Reader('doveshort1.kml');
reader.parse();
kml = reader.getLayer();
map.addLayer(kml);
kml.getProvider().addEventListener('tap', function(ev) {
const info = ev.target.getData();
let content = '<b>' + info.name + '</b><br/>';
let bubble = new H.ui.InfoBubble(ev.target.getPosition(), {
content: content
});
ui.addBubble(bubble);
});
可悲的是,当我单击该图标时,什么也没有发生。该页面位于https://wcsb.nz/wellringers/kmltest.html。感激地收到任何帮助。
解决方案
我可以看到您ev.target.getPosition()
在点击事件处理程序中使用。您要使用的功能是evt.target.getGeometry()
。所以你的代码片段看起来像这样。
kml.getProvider().addEventListener('tap', function (ev) {
if (ev.target instanceof H.map.Marker) {
const info = ev.target.getData();
let content = '<b>' + info.name + '</b><br/>';
let bubble = new H.ui.InfoBubble(ev.target.getGeometry(), {
content: content
});
ui.addBubble(bubble);
}
});
推荐阅读
- php - OVH CRON:如何执行 Symfony 命令?
- typescript - Typescript extensions. Conditional Types
- linux - 在记录过程运行时清除日志文件
- amazon-web-services - 是否可以在除 us-west-2、us-east-1、eu-west-1 之外的其他区域创建 Amazon EKS 集群?
- materialize - 实现选择和下拉:触摸事件选择错误的项目
- python - How to make a column of numbers increase from a certain value in python
- regex - What is the reg expression for Firestore constraints on document IDs?
- java - 如何以编程方式关闭 4G/数据?
- python-3.x - keras 连接多个图层导致 AttributeError:“NoneType”对象没有属性“_inbound_nodes”
- html - 在 css 标签之后,在第 2 行 html 上将标签与收音机正确对齐