我正在尝试将kml文件覆盖到Android版Google地图中的地面覆盖图像上。多边形会正确显示,但不会显示地标的名称,而是在其位置显示气泡,而气泡只会在单击时显示名称。
这是android地图显示的图像,而不是在Google地球screenshot of kml overlay
上正确显示的名称。这是kml文件的示例
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<open>1</open>
<Style id="Style_5">
<IconStyle><scale>0</scale></IconStyle>
<LabelStyle><color>9900ffff</color><scale>1</scale></LabelStyle><LineStyle><color>990000ff</color><width>1.5</width></LineStyle><PolyStyle><color>997f7fff</color><fill>0</fill><outline>1</outline></PolyStyle>
</Style>
<Placemark id="pm1">
<name>
<![CDATA[Name of place]]>
</name>
<Snippet maxLines="0">empty</Snippet>
<styleUrl>#Style_5</styleUrl>
<MultiGeometry>
<Point id="g0">
<altitudeMode>clampToGround</altitudeMode>
<coordinates>37.3870283588389,3.89010909235333</coordinates>
</Point>
<MultiGeometry>
<Polygon id="g1">
<altitudeMode>clampToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>37.488080789205128,4.004061832979036 37.493240913308938,3.932680116209725 37.490660851257033,3.907739516374665 37.486360747837196,3.893979185431183 37.478620561681488,3.884518957907539 37.281675825052908,3.776156351727622 37.284255887104806,3.783036517199363 37.288555990524642,3.789056661987136 37.290276031892581,3.799376910194747 37.300596280100194,3.80539705498252 37.298876238732255,3.815717303190131 37.303176342152092,3.826037551397743 37.304036362836065,3.839797882341224 37.311776548991773,3.852698192600738 37.3109165283078,3.865598502860252 37.309196486939868,3.878498813119766 37.309196486939868,3.902579392270859 37.316936673095576,3.933540136893693 37.323816838567318,3.950740550573045 37.321236776515413,3.967940964252397 37.280815804368935,3.989441481351587 37.294576135312418,4.002341791611101 37.488080789205128,4.004061832979036</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</MultiGeometry>
</MultiGeometry>
</Placemark>
</Document>
</kml>
答案 0 :(得分:0)
Google Maps API并不支持Earth支持的所有KML元素,并且我认为所需的图标和标签选项属于不受支持的元素。如果我理解正确,则希望在地图上显示KML文件而不显示图标(将IconStyle / scale设置为零),而只显示每个点的标签(已设置LabelStyle)。
查看KML in the Maps Javascript API的文档,您会发现不支持<scale>
,因此无法将图标设置为零大小,并且完全不支持<LabelStyle>
。但是我刚刚意识到,Maps Android SDK有单独的文档,其中说<scale>
受支持,因此您应该能够调整图标大小...但是<LabelStyle>
不支持,这可能意味着不支持标签。请注意,<IconStyle>
似乎都受支持,但是Android SDK(而不是Javascript API)支持其子标签<color>
。
您应该能够通过尝试仅包含简单点和几个图标比例选项的KML文件来查看哪个功能(零可能是特例?),从而能够测试IconStyle>比例标记。您也可以尝试使用不带样式的简单Label,以查看是否可以使标签完全正常工作,但我怀疑它们不会。
答案 1 :(得分:0)
新发布的android map utils库部分解决了此问题,android-maps-utils
但是目前,它不允许上述Kml中的小数位数为0。一个可行的解决方案是编写kml解析器以从kml文件中提取数据,然后将其覆盖在地图顶部。 Here is an example ,将数据解析为Java对象。