Google地图显示的地标名称没有气泡

时间:2018-07-12 14:04:31

标签: android google-maps kml

我正在尝试将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>

2 个答案:

答案 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对象。