How to get out all routes [PlaceMark, LineString] in a KML-file when added to Google Maps? [C#] -


using plugin: https://github.com/sushihangover/sushihangover.android.maps.utils

i adding route google map adding kml-layer it. foreach lat, lng , via polyline create line! problem have kml-file has multiple routes , current code 1 of routes gets added map.

how adjust code in order every single route stored in kml-file?

my kml looks this:

  <folder>         <name>tracks</name>         <description>a list of tracks</description>         <visibility>1</visibility>                     <open>0</open>              <placemark>                 <visibility>0</visibility>                             <open>0</open>                  <styleurl>#red</styleurl>                 <name>trackone</name>                 <description>track no. 1</description>                 <linestring>                     <extrude>true</extrude>                     <tessellate>true</tessellate>                     <altitudemode>clamptoground</altitudemode>                      <coordinates>                         10.366653,26.281982,106.075562 10.366759,56.282024,99.504028 10.366846,26.282043,95.945312                                                 </coordinates>                 </linestring>             </placemark>      </folder>     <folder>         <name>tracks</name>         <description>a list of tracks</description>         <visibility>1</visibility>                     <open>0</open>              <placemark>                 <visibility>0</visibility>                             <open>0</open>                  <styleurl>#green</styleurl>                 <name>tracktwo</name>                 <description>track no. 2</description>                 <linestring>                     <extrude>true</extrude>                     <tessellate>true</tessellate>                     <altitudemode>clamptoground</altitudemode>                      <coordinates>                  10.299386,26.278042,84.550720                   10.299453,26.278004,83.942444                   10.299522,26.277962,85.036560                   10.299572,26.277916,85.828735                            </coordinates>                 </linestring>             </placemark>     </folder>        <folder>         <name>waypoints</name>         <description>a list of waypoints</description>         <visibility>1</visibility>         <open>0</open>           <placemark>             <name>name</name>                                   <visibility>1</visibility>                         <open>0</open>                                      <description>                 no info available                </description>                    <lookat>                 <longitude>18.581586295142404</longitude>                 <latitude>36.313142255580445</latitude>                 <range>500</range>                 <tilt>45</tilt>                 <heading>0</heading>             </lookat>             <point>                 <coordinates>                     10.581586295142404,36.313142255580445                                         </coordinates>             </point>         </placemark>           <placemark>             <name>name</name>                                   <visibility>1</visibility>                         <open>0</open>                                      <description>                 no info available                </description>                    <lookat>                 <longitude>10.378910994617264</longitude>                 <latitude>36.285880605439296</latitude>                 <range>500</range>                 <tilt>45</tilt>                 <heading>0</heading>             </lookat>             <point>                 <coordinates>                     11.378910994617264,26.285880605439296                                         </coordinates>             </point>         </placemark>      </folder> 

...etc few more routes in there. code looks this:

      var container = (kmlcontainer)kmllayer.containers.iterator().next();       container = (kmlcontainer)container.containers.iterator().next();        var placemark = (kmlplacemark)container.placemarks.iterator().next();        if (placemark.hasgeometry && placemark.geometry kmllinestring)       {       var linestring = placemark.geometry kmllinestring;       var latlngarray = linestring.geometryjavaobject() java.util.arraylist;       var polylineoptions = new polylineoptions();       polylineoptions.invokecolor(0x66ff0000);        using (var builder = new latlngbounds.builder())       {            foreach (latlng latlng in latlngarray.toenumerable())            {                  builder.include(latlng);                  polylineoptions.add(new latlng(latlng.latitude, latlng.longitude));            }       }        map.addpolyline(polylineoptions); 

i new kml-files if understand correctly need foreach out each single cointaner? tried along these lines:

for (var contain = (kmlcontainer)kmllayer.containers.iterator(); contain.containers.iterator().next();) {      //add above code in here } 

or store list:

 list<kmlcontainer> cointainers = kmllayer.containers.iterator().next() list<kmlcontainer>; 

and add of above code inside for-loop. syntax wrong , not sure on how loop out each container.

how out of routes in kml-file , it's coordinates?

updated code:

        foreach (kmlcontainer container in kmllayer.containers.toenumerable())         {             system.diagnostics.debug.writeline("1"); // reach              foreach (var property in container.properties.toenumerable())             {                 //this java hashmap<string, string> ....                 system.diagnostics.debug.writeline("2"); //i reach             }              if (container.hasplacemarks)             {                 system.diagnostics.debug.writeline("3"); //i not reach strange since use same kml b4 found placemarks.             }              foreach (kmlplacemark placemark in container.placemarks.toenumerable())             {                 system.diagnostics.debug.writeline("4"); // not reach                  if (placemark.hasgeometry && placemark.geometry kmllinestring)                 {                     system.diagnostics.debug.writeline("5"); //not                     var linestring = placemark.geometry kmllinestring;                     var latlngarray = linestring.geometryjavaobject() java.util.arraylist;                     var polylineoptions = new polylineoptions();                     polylineoptions.invokecolor(0x66ff0000);                      using (var builder = new latlngbounds.builder())                     {                         foreach (latlng latlng in latlngarray.toenumerable())                         {                             builder.include(latlng);                             polylineoptions.add(new latlng(latlng.latitude, latlng.longitude));                         }                     }                      map.addpolyline(polylineoptions);                 }                  else                 {                     system.diagnostics.debug.writeline("6"); //not                 }             }         } 

a kml folder turned kmlcontainer, need loop on kmllayer containers , extract elements need:

note: using linq's toenumerable convert java iterator

example:

if (kmllayer.containers != null) {     foreach (kmlcontainer container in kmllayer.containers.toenumerable())     {         foreach (var property in container.properties.toenumerable())         {             //this java hashmap<string, string> ....             log.debug(constants.tag, $"{property.tostring()} : {container.getproperty(property.tostring())}");          }         foreach (kmlplacemark placemark in container.placemarks.toenumerable())         {             log.debug(constants.tag, placemark.tostring());         }     } } 

output:

sometag: visibility : 1 sometag: name : tracks sometag: description : list of tracks sometag: open : 0 sometag: placemark{ sometag:  style id=#red, sometag:  inline style=null sometag: } sometag: visibility : 1 sometag: name : tracks sometag: description : list of tracks sometag: open : 0 sometag: placemark{ sometag:  style id=#green, sometag:  inline style=null sometag: } 

to iterate container w/ containers:

if (kmllayer.hascontainers) {     void iterateproperties(kmlcontainer containers)     {         foreach (var property in containers.properties.toenumerable())             log.debug(constants.tag, $"{property.tostring()} : {containers.getproperty(property.tostring())}");     }     void iteratelinestring(kmllinestring linestring)     {         var latlngarray = linestring.geometryjavaobject() java.util.arraylist;         foreach (latlng item in latlngarray.toenumerable())         {             log.debug(constants.tag, $"{item.latitude}:{item.longitude}");         }     }     void iterateplacemarks(kmlcontainer container)     {         foreach (kmlplacemark placemark in container.placemarks.toenumerable())         {             iterateproperties(container);             log.debug(constants.tag, placemark.tostring());             if (placemark.hasgeometry & placemark.geometry kmllinestring)                 iteratelinestring(placemark.geometry kmllinestring);         }     }     void iteratesubcontainers(kmlcontainer container)     {         iterateproperties(container);         iterateplacemarks(container);         if (container.hascontainers)         {             foreach (kmlcontainer subcontainer in container.containers.toenumerable())                 iteratesubcontainers(subcontainer);         }     }      foreach (kmlcontainer container in kmllayer.containers.toenumerable())         iteratesubcontainers(container); } 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -