的OpenLayers 5.3,得到KML地标层性能

问题描述 投票:0回答:1

我有与不同的KML层地震相关信息的地图。

还有,显示了一个特定的地点的相关信息,如果你“悬停”与它的鼠标提示。

例如。

我将我的鼠标移到“蓬塔卡纳”,应该有一个提示:

  • 名称:蓬塔卡纳
  • 震级:2.2
  • 纬度:XXX
  • 经度:YYY
  • TIME:DD / MM / YY,HH:二

注:在我的KML,你可以看到,我有所有这些相关信息:

<Folder>
<Placemark id="placemark54021">
<name> Punta Cana</name>
<lat>38.89</lat>
<longitudo>15.78</longitudo>
<magnitudo>2.1</magnitudo>
<profondita>109</profondita>
<data_intera>18/01/2019</data_intera>
<orario>09:10</orario>
<styleUrl>#simbolo_last_0_1</styleUrl>
<Point>
<coordinates>15.78,38.89</coordinates>
</Point>
</Placemark>
</Folder>

但是,如果我尝试获取属性,我设法只读“名称”属性:

EG

map.on(select, function(event) {

    var feature = map.forEachFeatureAtPixel(event.pixel,
        function(feature, layer) {

        var values = feature.values_;

        var coordinate = event.coordinate;
        var hdms = ol.coordinate.toStringHDMS(ol.proj.toLonLat(coordinate));


        content.innerHTML = '<p style="font-weight: 800">'+ values.name +' - ' + '02/02/2002' + ' - ore 06:00</p>' +
                '<p><span style="font-weight: bold; color: red;">Magnitudo: 2.2</span> - ' +
                '<b>Lat:</b> 42.00 - <b>Long</b>: 32.00 - <b>Profondità</b>: 9km</p>';

        overlay.setPosition(coordinate);


        }, {
            hitTolerance: 5
        });
});

我使用values.name正确读取属性名称。但是,如果我尝试以同样的方式来读取其他属性。例如: - - values.lat - values.longitudo等等......这是行不通的!

我怎样才能收集来自KML的其他属性?我缺少的东西吗?

谢谢!

javascript openlayers kml openlayers-5
1个回答
4
投票

不知道这是相关的(因为我不知道的OpenLayers好),但你的KML结构是无效的KML。您正在使用自定义的标签数据直接在KML,这是不支持的变量。如果你想包括像在您的KML功能属性数据,通常最好使用一个<ExtendedData>部分(有或没有定义的架构)。您的KML将最终看起来是这样的:

<kml>
  <Folder>
    <Placemark id="placemark54021">
      <name>Punta Cana</name>
      <styleUrl>#simbolo_last_0_1</styleUrl>
      <ExtendedData>
        <Data name="lat"><value>38.89</value></Data>
        <Data name="longitudo"><value>15.78</value></Data>
        <Data name="magnitudo"><value>2.1</value></Data>
        <Data name="profondita"><value>109</value></Data>
        <Data name="data_intera"><value>18/01/2019</value></Data>
        <Data name="orario"><value>09:10</value></Data>
      </ExtendedData>
      <Point>
        <coordinates>15.78,38.89</coordinates>
      </Point>
    </Placemark>
  </Folder>
</kml>
© www.soinside.com 2019 - 2024. All rights reserved.