public Boolean insert(String tp1, String tp2) { try { // Get the end placemark of the 1st trip and the start placemark of the second trip IKmlPlacemark tp1fn = t_pool.getFinish(t_pool.getByName(tp1)); IKmlPlacemark tp2st = t_pool.getStart(t_pool.getByName(tp2)); //create a place mark to store the new place mark IKmlPlacemark start = ge.createPlacemark(""); IKmlPlacemark finish = ge.createPlacemark(""); start.setName(tp1fn.getName()); finish.setName(tp2st.getName()); IKmlPoint sp = ge.createPoint(""); IKmlPoint fp = ge.createPoint(""); IKmlPlacemark _temp = ge.createPlacemark(""); IKmlLineString temp = ge.createLineString(""); // Retrieve the coordinates of the two trips Hashtable cds1 = Module.getCoordinates(tp1fn); Hashtable cds2 = Module.getCoordinates(tp2st); sp.setLatLng((double)cds1["lat"], (double)cds1["lon"]); start.setGeometry(sp); fp.setLatLng((double)cds2["lat"], (double)cds2["lon"]); finish.setGeometry(fp); String color = randomCol(); IKmlStyleMap sm = ge.createStyleMap(""); IKmlStyle normal = mkStyle(color, @"http://maps.google.com/mapfiles/kml/paddle/wht-blank.png", (float)0.3); IKmlStyle highlight = mkStyle(color, @"http://maps.google.com/mapfiles/kml/paddle/wht-blank.png", (float)0.4); sm.setNormalStyle(normal); sm.setHighlightStyle(highlight); start.setStyleSelector(sm); finish.setStyleSelector(sm); temp.getCoordinates().pushLatLngAlt((double)cds1["lat"], (double)cds1["lon"], 0); temp.getCoordinates().pushLatLngAlt((double)cds2["lat"], (double)cds2["lon"], 0); _temp.setGeometry(temp); IKmlStyle sty = ge.createStyle(""); sty.getLineStyle().setWidth((float)4); sty.getLineStyle().getColor().set(color); _temp.setStyleSelector(sty); //create a new KML folder for the new trip and append the tmp features of the previous trip IKmlFolder temp1 = ge.createFolder(""); temp1.getFeatures().appendChild(start); temp1.getFeatures().appendChild(_temp); temp1.getFeatures().appendChild(finish); String[] attributes = new String[14]; //Add the new trip to the trip pools t_pool.add(tp2, temp1, attributes); ge.getFeatures().appendChild(temp1); // record the insert action for undo action record.ins_trip(tp2); return(true); } catch { return(false); } }