我有KML文件,我想在我的片段中插入图层tomy googlemap。 我尝试使用Android-Map-Utils中的KmlLayer,但解析文件需要很长时间(大约2分钟),然后什么都不绘制。
KmlLayer kmlLayer = new KmlLayer(googleMap, R.drawable.crime, getActivity().getBaseContext());
kmlLayer.addLayerToMap();
答案 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();