在BalloonStyle中KML实体置换在Google地图失败,而不是谷歌地球(KML Entit

2019-10-17 10:49发布

花了太多的时间从内GEarth与谷歌地图的调试KML。 有人可以给我为什么下面的下面的“实体更换”工作正常GE但在GMaps失败的提示。

我跑XMLVALIDATE和文件是好的,但在[CDATA]的标签不会通过谷歌地图API所取代,只在GEarth。 我读了最佳实践KML文件BalloonStyle中实体的置换 ,并在头脑麻木的描述OGC KML 2.2标准 ,并调整和修整的文件,但我仍然难住了。 我不能让实体置换到GMaps API工作在下面的情况。

有任何想法吗? -谢谢

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
    <Document>
        <name>ParcelsJoinedx.kml</name>
        <Style id="outline">
            <PolyStyle>
                <color>00ff0000</color>
                <fill>1</fill>
                <outline>1</outline>
            </PolyStyle>
            <BalloonStyle>
                <bgColor>ffffffff</bgColor>
                <text>
                <![CDATA[
                    <head>
                    <title></title>
                    <STYLE TYPE="text/css">
                    <!-- TD{font-family: Arial; font-size: 9pt;} --->
                    </STYLE>
                    </head>
                    <body>
                      <table >
                      <tr><td valign='top'><font color="#aa0000">$[ParcelJoined/Location/displayName]:</font></td><td>$[ParcelJoined/Location]</td>
                      <tr><td><font color="#aa0000">$[ParcelJoined/ParcelID/displayName]:</font></td><td>$[ParcelJoined/ParcelID]</td>
                     </tr></table>
                     </body>
                     ]]>
                 </text>
            </BalloonStyle>
        </Style>
        <Schema name="ParcelJoined" id="ParcelJoinedID">
            <SimpleField type="string" name="Name"></SimpleField>
            <SimpleField type="string" name="Description"></SimpleField>
            <SimpleField type="string" name="Location">
                <displayName><![CDATA[<b>Location</b>]]></displayName>
            </SimpleField>
            <SimpleField type="string" name="ParcelID">
                <displayName><![CDATA[<b>ParcelID</b>]]></displayName>
            </SimpleField>
            <SimpleField type="string" name="Zone"></SimpleField>
            <SimpleField type="string" name="AssessArea"></SimpleField>
            <SimpleField type="string" name="Owner"></SimpleField>
            <SimpleField type="string" name="CoOwner"></SimpleField>
            <SimpleField type="string" name="Address1"></SimpleField>
            <SimpleField type="string" name="Address2"></SimpleField>
            <SimpleField type="string" name="City"></SimpleField>
            <SimpleField type="string" name="State"></SimpleField>
            <SimpleField type="string" name="ZIP"></SimpleField>
            <SimpleField type="string" name="AcctNum"></SimpleField>
            <SimpleField type="string" name="YearBuilt"></SimpleField>
            <SimpleField type="string" name="LandValue"></SimpleField>
            <SimpleField type="string" name="BldgValue"></SimpleField>
            <SimpleField type="string" name="OtherValue"></SimpleField>
            <SimpleField type="string" name="TotalValue"></SimpleField>
            <SimpleField type="string" name="MainBldgDesc"></SimpleField>
            <SimpleField type="string" name="StateCode"></SimpleField>
            <SimpleField type="string" name="SaleDate"></SimpleField>
            <SimpleField type="string" name="Rooms"></SimpleField>
            <SimpleField type="string" name="Beds"></SimpleField>
            <SimpleField type="string" name="Baths"></SimpleField>
        </Schema>
        <Folder>
            <name>ParcelJoinedFldr</name>
            <Placemark>
                <styleUrl>#outline</styleUrl>
                <ExtendedData>
                    <SchemaData schemaUrl="#ParcelJoinedID">
                        <SimpleData name="Location">68 WALCOTT AVE</SimpleData>
                        <SimpleData name="ParcelID">9-459</SimpleData>
                        <SimpleData name="Zone">R40$39</SimpleData>
                        <SimpleData name="AssessArea">3.72 AC</SimpleData>
                        <SimpleData name="Owner">CXXX, CXX R ET</SimpleData>
                        <SimpleData name="CoOwner">CXXX, GLXXA G</SimpleData>
                        <SimpleData name="Address1">32 EAST 88TH STREET</SimpleData>
                        <SimpleData name="Address2"></SimpleData>
                        <SimpleData name="City">NEW YORK</SimpleData>
                        <SimpleData name="State">NY</SimpleData>
                        <SimpleData name="ZIP">10021</SimpleData>
                        <SimpleData name="AcctNum">2421</SimpleData>
                        <SimpleData name="YearBuilt">1910</SimpleData>
                        <SimpleData name="LandValue">2036060</SimpleData>
                        <SimpleData name="BldgValue">479800</SimpleData>
                        <SimpleData name="OtherValue">1500</SimpleData>
                        <SimpleData name="TotalValue">2517360</SimpleData>
                        <SimpleData name="MainBldgDesc">CONVNTL</SimpleData>
                        <SimpleData name="StateCode">1100 - SEASONAL &amp; BEACH</SimpleData>
                        <SimpleData name="SaleDate">04/07/1995</SimpleData>
                        <SimpleData name="Rooms">0</SimpleData>
                        <SimpleData name="Beds">0</SimpleData>
                        <SimpleData name="Baths">4 Full / 0 H</SimpleData>
                    </SchemaData>
                </ExtendedData>
                <Polygon>
                    <outerBoundaryIs>
                        <LinearRing>
                            <coordinates>-71.363000752291924,41.489279023867283 -71.364928267362686,41.489246551445632 -71.364928271377551,41.48924655145035 -71.366127398895557,41.489226333780891 -71.366980322431843,41.489211945621989 -71.366980559667908,41.489218729506135 -71.366992415755973,41.489658359975031 -71.363335128398276,41.489691230204564 -71.36332242991972,41.489681182960041 -71.36320151947757,41.489583338563875 -71.363080572769988,41.489488329510586 -71.363012929798629,41.48940065703426 -71.363000855378388,41.489285011997865 -71.363000752291924,41.489279023867283</coordinates>
                        </LinearRing>
                    </outerBoundaryIs>
                </Polygon>
            </Placemark>
        </Folder>
    </Document>
</kml>

Answer 1:

我认为,它可能会工作,如果你用简单的<ExtendedData><Data>元素提供的数据,以及或而非<Schema><SchemaData>元素。

从看它,你甚至需要架构数据? 您使用的KML在需要数据作为输入字符串的一些其它应用程序?

谷歌地球和谷歌地图忽略的数据类型,所以它只是腹胀您的KML如果没有其它目的为您服务。

该文件的前半部分,你链接到这个交易。



Answer 2:

要回答你关于为什么这不会在谷歌地图工作的问题:两个<Schema><SchemaData>被正式由谷歌地图API不支持。 <Data>完全支持和<ExtendedData>部分支持( 参考 )。

参考提供一个表,详细说明由API支持的KML特征。 下面是相关行:

+----------------+-----------------------+----------------------------+
|  KML element   | Supported in the API? |         Comment            |
+----------------+-----------------------+----------------------------+
| <BalloonStyle> | partially             | only <text> is supported   |
| <Data>         | yes                   |                            |
| <ExtendedData> | partially             | untyped <Data> only, no    |
|                |                       | <SimpleData> or <Schema>,  |
|                |                       | and entity replacements of |
|                |                       | the form $[dataName] are   |
|                |                       | not supported.             |
| <Schema>       | no                    |                            |
| <SchemaData>   | no                    |                            |
+----------------+-----------------------+----------------------------+

万一链路发生故障是在谷歌地图的JavaScript API开发者文档中的“KML和GeoRSS”指南“支持的KML元素”一节。



文章来源: KML Entity Replacement in BalloonStyle Fails in GoogleMaps, But Not GoogleEarth