如何从kml层android获取点列表

如何从kml层android获取点列表,android,google-maps,android-maps,Android,Google Maps,Android Maps,我正试图在我的android应用程序中获取我的kml层的坐标,但我似乎找不到该怎么做 我有这个kml层: KmlLayer layer = new KmlLayer(mMap, R.raw.allowedarea, getApplicationContext()); 我试图得到他的边界点的纬度和长度列表 ArrayList<LatLnt> latlitArray = layer.soemthing(); ArrayList latlitArray=layer.soemthing(

我正试图在我的android应用程序中获取我的kml层的坐标,但我似乎找不到该怎么做

我有这个kml层:

KmlLayer layer = new KmlLayer(mMap, R.raw.allowedarea, getApplicationContext());
我试图得到他的边界点的纬度和长度列表

ArrayList<LatLnt> latlitArray = layer.soemthing();
ArrayList latlitArray=layer.soemthing();

可以找到任何东西,请大家帮忙。

这将递归访问容器中的每个placemark几何体。我不知道获得的对象是否可以是除List和LatLng之外的任何其他类或集合的实例

public void accessContainers(Iterable<KmlContainer> containers) {
    for(KmlContainer c : containers) {
        if(c.hasPlacemarks()) {
            for(KmlPlacemark p : c.getPlacemarks()) {
                KmlGeometry g = p.getGeometry();
                Object object = g.getGeometryObject();

                if(object instanceof LatLng) {
                    LatLng latlng = (LatLng)object;
                    //Do more stuff with the point
                }

                if(object instanceof List<?>) {
                    List<LatLng> list = (List<LatLng>)object;
                    //Do more stuff with the list of points
                }

                Log.d(TAG, g.getGeometryType() + ":" + object.toString());
            }
        }
        if(c.hasContainers()) {
            accessContainers(c.getContainers());
        }
    }
}
public void访问容器(Iterable容器){
用于(KmlContainer c:集装箱){
如果(c.hasPlacemarks()){
对于(KmlPlacemark p:c.getPlacemarks()){
KmlGeometry g=p.getGeometry();
Object Object=g.getGeometryObject();
if(LatLng的对象实例){
LatLng LatLng=(LatLng)对象;
//用这个观点做更多的事情
}
if(列表的对象实例){
List=(List)对象;
//用点列表做更多的事情
}
Log.d(标记,g.getGeometryType()+”:“+object.toString());
}
}
if(c.hascanners()){
accessContainers(c.getContainers());
}
}
}
试试这个解决方案

try {
        KmlLayer layer = new KmlLayer(googleMap, R.raw.zone, this);
        layer.addLayerToMap();

        Iterable<KmlContainer> containers = layer.getContainers();
        accessContainers(containers);
    } catch (XmlPullParserException | IOException e) {
        e.printStackTrace();
    }



public void accessContainers(Iterable<KmlContainer> containers) {
            for (KmlContainer container : containers) {
                if (container != null) {
                    if (container.hasContainers()) {
                        accessContainers(container.getContainers());
                    } else {
                        if (container.hasPlacemarks()) {
                            accessPlacemarks(container.getPlacemarks());
                        }
                    }
                }
            }
        }

    public void accessPlacemarks(Iterable<KmlPlacemark> placemarks) {
        for (KmlPlacemark placemark : placemarks) {
            if (placemark != null) {
                KmlGeometry geometry = placemark.getGeometry();
                if (geometry instanceof KmlPolygon) {
                    KmlPolygon polygon = (KmlPolygon) geometry;
                    mLatLngList.addAll(polygon.getOuterBoundaryCoordinates());
                }
            }
        }
    }
试试看{
Kmlayer层=新Kmlayer(谷歌地图,R.raw.zone,this);
layer.addLayerToMap();
Iterable containers=layer.getContainers();
容器(容器);
}捕获(XmlPullParserException | IOE异常){
e、 printStackTrace();
}
公共容器(可访问容器){
用于(KmlContainer容器:容器){
if(容器!=null){
if(container.hasContainers()){
accessContainers(container.getContainers());
}否则{
if(container.hasPlacemarks()){
accessPlacemarks(container.getPlacemarks());
}
}
}
}
}
公共无效访问placemarks(Iterable placemarks){
用于(KmlPlacemark placemark:placemarks){
if(placemark!=null){
KmlGeometry geometry=placemark.getGeometry();
if(KmlPolygon的几何体实例){
KmlPolygon多边形=(KmlPolygon)几何体;
mLatLngList.addAll(polygon.getOuterBoundaryCoordinates());
}
}
}
}

发布您的kml文件检查此SO问题以及它是否能帮助您:)虽然此代码可能会回答问题,但提供有关此代码回答问题的原因和/或方式的附加上下文可提高其长期价值。