实体替换不在KML / XML文件中,我该如何使用这些数据?

时间:2014-08-09 17:13:37

标签: google-maps-api-3 kml

基本上我想把信息放到Maps API的气球中,这是KML file,数据是使用SimpleData标签存储的,我试图从BalloonStyle文本标签访问它。

但它不起作用,在气球中只显示$ [某事]。经过一些研究,我发现了Entity replacement may not be supported anymore by SimpleData tags

那我该如何管理数据呢?我从shapefile中获取了ogr2ogr转换的数据,我不知道如何管理它的输出以使其使用ExtendedData和Data标签。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用文本编辑器替换<SchemaData><SimpleData> <Data><value>元素,最好是可以对NotePad++等搜索执行正则表达式替换的文本编辑器。

你从这开始:

<ExtendedData>
  <SchemaData schemaUrl="#biblioteche">
        <SimpleData name="INDIRIZZO">VIA SAN VITTORE, 21</SimpleData>
        <SimpleData name="TIPOLOGIA">BIBLIOTECHE</SimpleData>
        ...
        <SimpleData name="ID">0</SimpleData>
  </SchemaData>
</ExtendedData>

需要转换为此格式:

<ExtendedData> 
    <Data name="INDIRIZZO">
        <value>VIA SAN VITTORE, 21</value>
    </Data>
    <Data name="TIPOLOGIA">
        <value>BIBLIOTECHE</value>
    </Data>
        ...
    <Data name="ID">
        <value>0</value>
    </Data>
</ExtendedData>

在全球范围内进行以下替换(按此顺序):

 #    Find what                               Replace with
 1.   <SchemaData schemaUrl="#biblioteche">   
 2.   </SchemaData>
 3.   <SimpleData                             <Data
 4.   (<Data name=".*?">)                     \1<value>
 5.   </SimpleData>                           </value></Data>

步骤1和2有一个空目标,以便您删除该元素 第4步是唯一需要作为正则表达式完成的步骤。

working example