将大KML文件(3MB)中的图层添加到Android中的GoogleMap

时间:2015-09-02 21:41:37

标签: android google-maps-android-api-2

我有KML文件,我想在我的片段中插入图层tomy googlemap。 我尝试使用Android-Map-Utils中的KmlLayer,但解析文件需要很长时间(大约2分钟),然后什么都不绘制。

        KmlLayer kmlLayer = new KmlLayer(googleMap, R.drawable.crime, getActivity().getBaseContext());
        kmlLayer.addLayerToMap();

2 个答案:

答案 0 :(得分:0)

您可能会发现传递kml文件并添加图层

的速度更快

答案 1 :(得分:0)

图形的可视化表示在KML文件中定义。 KML文件中的每个形状都有一个样式定义(例如):

<styleUrl>#Style8-multi_geometry-4-map</styleUrl>

映射到StyleMap(包含多个样式)或Style。样式定义了在地图上绘制的内容,下面是一个绘制带边框的填充多边形的示例:

<Style id='Style8-polygon-3'>
    <LabelStyle>
        <scale>0.0</scale>
    </LabelStyle>
    <LineStyle>
        <color>ff666666</color>
        <width>1</width>
    </LineStyle>
    <PolyStyle>
        <color>7f0000ff</color>
        </PolyStyle>
    <BalloonStyle>
        <text>$[description]</text>
    </BalloonStyle>
</Style>

如果KML文件中的形状缺少样式,您可能在地图上看不到任何内容。

关于装载时间,3MB 2分钟对我来说似乎正常。引擎盖下是一个不是最快的XML解析器。您可以考虑将KML转换为GeoJSON。可以在线找到转换工具,转换后不应用样式,必须手动设置。缩小GeoJSON以保持文件大小。

GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.crime, getContext());
layer.getDefaultPolygonStyle().setFillColor(getResources().getColor(R.color.accent));
layer.getDefaultPolygonStyle().setStrokeColor(getResources().getColor(R.color.accent));
layer.getDefaultPolygonStyle().setStrokeWidth(1);
layer.addLayerToMap();