2

GEarth と Google マップから KML をデバッグするのに何時間も費やしました。以下の「エンティティの置換」が GE では正常に機能するが、GMaps では失敗する理由について、ヒントを教えてください。

XMLValidate を実行したところ、ファイルに問題はありませんでしたが、[CDATA] のタグは GoogleMaps API に置き換えられず、GEarth でのみ置き換えられました。BalloonStyle エンティティ置換に関するベスト プラクティス KML ドキュメントと、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>
4

2 に答える 2

1

and要素だけでなく、orよりも単純な<ExtendedData>and要素を使ってデータを提供すればおそらくうまくいくと思います。<Data><Schema><SchemaData>

それを見ると、スキーマ データも必要ですか。型付き文字列としてデータを必要とする他のアプリケーションで KML を使用していますか?

Google Earth と Google マップはタイプ データを無視するため、他に目的がない場合は kml を肥大化させるだけです。

リンク先のドキュメントの前半はこれを扱っています。

于 2012-12-05T21:49:50.803 に答える
1

これが Google マップで機能しない理由についての質問に答えるには、<Schema>との両方<SchemaData>が Google Maps 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                    |                            |
+----------------+-----------------------+----------------------------+

リンクが壊れている場合は、Google Maps JavaScript API 開発者向けドキュメントの「KML と GeoRSS」ガイドの「サポートされている KML 要素」セクションを参照してください。

于 2016-03-22T23:21:19.260 に答える