如何在开放图层中访问 kml 中的嵌套标签
How do I access a nested tag in a kml in openlayers?
我正在尝试修改地震集群图以显示我自己的一些数据。 我在使用 KML 中的属性设置样式时遇到问题。 这是我的 KML 中的示例功能:
<Placemark>
<name>REIERSTAD 2 ORION DW 16-2-7-6</name>
<ExtendedData><SchemaData schemaUrl="#alberta_wells">
<SimpleData name="UWI">F2/16-02-007-06W4/0</SimpleData>
<SimpleData name="KeyList">0074060216F20</SimpleData>
<SimpleData name="Field">0998</SimpleData>
<SimpleData name="Pool">0158098</SimpleData>
<SimpleData name="OSDep">0000000</SimpleData>
<SimpleData name="LicStatus">Issued</SimpleData>
<SimpleData name="License">0043029</SimpleData>
<SimpleData name="LicDate">19720719</SimpleData>
<SimpleData name="Licensee">0FF30</SimpleData>
<SimpleData name="FDDate">19720719</SimpleData>
<SimpleData name="TotalDep">0457.00</SimpleData>
<SimpleData name="WellStat">0600080000</SimpleData>
<SimpleData name="StatDate">19720721</SimpleData>
</SchemaData></ExtendedData>
<Point><coordinates>-110.707313,49.537234</coordinates></Point>
</Placemark>
下面是地震聚类示例中处理各个要素样式的代码片段:
function createEarthquakeStyle(feature) {
// 2012_Earthquakes_Mag5.kml stores the magnitude of each earthquake in a
// standards-violating <magnitude> tag in each Placemark. We extract it
// from the Placemark's name instead.
var name = feature.get('name');
var magnitude = parseFloat(name.substr(2));
var radius = 5 + 20 * (magnitude - 5);
return new ol.style.Style({
geometry: feature.getGeometry(),
image: new ol.style.RegularShape({
radius1: radius,
radius2: 3,
points: 5,
angle: Math.PI,
fill: earthquakeFill,
stroke: earthquakeStroke
})
});
}
我想使用"TotalDep"值作为我的半径,替换示例当前使用的半径(幅度(。 但是,我的 KML 将这个"TotalDep"值埋在多个标签中。 我一直在尝试使用 DOMParser 来提取这个值,如下所示:
function createEarthquakeStyle(feature) {
var extendedData = feature.get('ExtendedData');
console.log(extendedData)
xmlDoc = parser.parseFromString(extendedData, "text/xml")
console.log(xmlDoc)
var wellDepth
var nodeList = xmlDoc.getElementsByTagName("SimpleData")
for (var i = 0; i < nodeList.length; i++) {
if (nodeList[i].getAttribute("name") == "TotalDep") {
wellDepth = parseFloat(nodeList[i].nodeValue)
}
}
var radius = wellDepth / 10.0;
return new ol.style.Style({
geometry: feature.getGeometry(),
image: new ol.style.RegularShape({
radius1: radius,
radius2: 3,
points: 5,
angle: Math.PI,
fill: earthquakeFill,
stroke: earthquakeStroke
})
});
}
它不起作用,一旦您放大到足以将聚类折叠为单个要素,要素将不会显示。
我看到在原始示例中,在输入功能上调用了".get("name"(",该功能返回"name"标签内的内容。 我以为调用".get("扩展数据"("会返回"扩展数据"标签的内容,但是当我尝试将其打印到控制台时,它似乎没有返回任何内容。 甚至在将变量 extendedData 转换为字符串之前将其记录到控制台日志"未定义"。
我想我要问的是,在尝试访问这些值时,如何向下钻取到嵌套标签?
好吧,显然我已经以某种方式过度复杂化了,但我对我现在如何让它工作感到困惑。 似乎只是打电话
var wellDepth = feature.get("TotalDep")
返回此标记中包含的值:
<SimpleData name="TotalDep">0457.00</SimpleData>
我想".get(("函数会搜索标签名称和标签属性吗?并且还查看嵌套标签?这是一些直接的魔法在这里发生...我从极度沮丧到对此印象深刻。
对于在编写样式函数时可能拼命寻找有关如何从 KML 访问属性的答案的人,作为最后一个提示:尝试调用 feature.getKeys(( 并将其记录到控制台。 您将获得可以使用 feature.get(( 访问的所有可能内容的列表。 我就是这样想出来的。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何访问fastOpt.js
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- 难以访问的JS环境中的语法错误
- 如何从对象的原型方法访问JavaScript对象属性
- 访问json数组中的对象
- 通过javascript/html访问twitter共享iframe
- Dojo:访问dijit.form.Select中单击的项目
- 为什么在这个网站上不能通过JS访问元素
- 从ng模板访问作用域
- 如何访问UIWebView'的子窗口上下文
- 如何在开放图层中访问 kml 中的嵌套标签
- 为什么Google Maps服务器需要访问客户端浏览器中添加的KML层?