如何在KML中绘制多边形内的自定义文本?

时间:2017-02-06 12:06:10

标签: kml

我想使用KML文件在多边形内绘制自定义文本。 我的Polygon的Kml文件 -

 <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://www.opengis.net/kml/2.2"><Document><Style id="White"><PolyStyle><color>64FFFFFF</color></PolyStyle></Style><Placemark><styleUrl>#white</styleUrl><Polygon><outerBoundaryIs><LinearRing><coordinates>-95.27999999999997,30.0175 -95.27166999999997,30.0175 -95.27166999999997,30.01083 -95.27999999999997,30.01083 -95.27999999999997,30.0175</coordinates></LinearRing></outerBoundaryIs></Polygon><ExtendedData><Data name="isColorful">true</Data><Data name="color">white</Data></ExtendedData></Placemark></Document></kml>

我缺少任何标签或属性来显示多边形中心的文字。 请帮忙。

实际上,我想在多边形内部显示一些数据,我使用Point和polygon创建了KML。 - 我使图标比例0隐藏图标。 它在“Google Earth”中显示多边形内的名称标签,但它不会在“Google地图”中显示标签。 请参阅我的示例KML文件

<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://www.opengis.net/kml/2.2"><Document><Style id="White"><IconStyle> <color>ff00ff00</color>         <colorMode>random</colorMode><scale>0</scale></IconStyle><LabelStyle><scale>0.6</scale></LabelStyle><PolyStyle><color>64FFFFFF</color></PolyStyle></Style><Placemark><name>64,100</name><styleUrl>#White</styleUrl><MultiGeometry><Point><coordinates>-95.27899999999997,30.0172</coordinates></Point><Polygon><outerBoundaryIs><LinearRing><coordinates>-95.27999999999997,30.0175 -95.27166999999997,30.0175 -95.27166999999997,30.01083 -95.27999999999997,30.01083 -95.27999999999997,30.0175</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry></Placemark><Placemark><name>65,93</name><styleUrl>#White</styleUrl><MultiGeometry><Point><coordinates>-95.27066999999997,29.97053</coordinates></Point><Polygon><outerBoundaryIs><LinearRing><coordinates>-95.27166999999997,29.97083 -95.26333999999997,29.97083 -95.26333999999997,29.96417 -95.27166999999997,29.96417 -95.27166999999997,29.97083</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry></Placemark></Document></kml>

1 个答案:

答案 0 :(得分:0)

KML中的某些元素出现故障,导致KML与KML 2.2规范无关。首先应该验证KML。有关验证KML的一些提示,请参阅here

ExtendedData元素不正确。缺少必需的value元素。

<ExtendedData>
    <Data name="isColorful">true</Data>
    <Data name="color">white</Data>
</ExtendedData>

需要重新构建:

<ExtendedData>
    <Data name="isColorful">
        <value>true</value>
    </Data>
    <Data name="color">
        <value>white</value>
    </Data>
</ExtendedData>

如果KML地标具有ExtendedData,则单击时,这些数据字段将在描述气球弹出窗口中的人类可读HTML表格中进行格式化。

如果要覆盖HTML表格,请在您的KML地标中添加<description>,其中可以包含HTML标记。请参阅KML reference docs中的说明部分。

更新: 如果想要在多边形上显示文本,则需要在您描述的MultiGeometry中包含Point和Polygon,但还需要在地标中添加<name>元素。 name元素的文本将是在该点的位置显示的标签。这适用于Google地球,但不适用于Google地图。 KML在Google地图中有一些限制。如果要将文本添加到多边形的中心,请通过Google Maps API添加标签标记。 https://developers.google.com/maps/documentation/javascript/examples/marker-labels