| <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> <Folder> <description>Examples of bi directional flow of information</description> <name>Network Links</name> <visibility>1</visibility> <open>1</open> <NetworkLink> <description>Lets send coordinates once in a while</description> <name>Message Pushing</name> <visibility>1</visibility> <open>1</open> <refreshVisibility>1</refreshVisibility> <flyToView>0</flyToView> <Url> <href>http://localhost:8081/Tour/message</href> <refreshInverval>2</refreshInverval> <viewRefreshMode>onStop</viewRefreshMode> <viewRefreshTime>1</viewRefreshTime> </Url> </NetworkLink> </Folder> </kml> |


| <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> <Placemark> <name><![CDATA[<font color="red">Alan Berg</font>]]></name>\ <description><![CDATA[BLAH BLAH <i> Fri Oct 21 11:42:45 CEST 2005</i>]]> </description> <Point> <coordinates>4.889999,52.369998,0</coordinates> </Point> </Placemark> </kml> |
| MessageServlet.java package test.google.earth.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.*; import test.google.earth.bean.LastLocationBean; import test.google.earth.bean.LastMessageBean; import java.util.Date; public class MessageServlet extends HttpServlet { private static LastMessageBean lastMessage=new LastMessageBean(); private static LastLocationBean lastLocation= new LastLocationBean(); public void init(ServletConfig config) throws ServletException { super.init(config); lastMessage.setMessage("No message Yet"); lastMessage.setName("System"); lastMessage.setUpdated(new Date()); lastLocation.setCoords("No contact with a client yet"); lastLocation.setIpAddress(""); lastLocation.setUpdated(new Date()); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String coords = request.getParameter("BBOX"); if (coords==null){ return; } String message; String name; Date lastDate; String ipAddress = request.getRemoteAddr(); synchronized(this) { lastLocation.setCoords(coords); lastLocation.setIpAddress(ipAddress); lastLocation.setUpdated(new Date()); message=lastMessage.getMessage(); name=lastMessage.getName(); lastDate=lastMessage.getUpdated(); } response.setContentType("application/keyhole"); PrintWriter out = response.getWriter(); String[] coParts= coords.split(","); float userlon; float userlat; try{ userlon = ((Float.parseFloat(coParts[2]) - Float.parseFloat(coParts[0]))/2)+ Float.parseFloat(coParts[0]); userlat = ((Float.parseFloat(coParts[3]) - Float.parseFloat(coParts[1]))/2) + Float.parseFloat(coParts[1]); }catch(NumberFormatException e){ return; } String klmString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<kml xmlns=\"http://earth.google.com/kml/2.0\">\n" + "<Placemark>\n" + "<name><![CDATA[<font color=\"red\">"+name+"</font>]]></name>\n" +"<description><![CDATA["+message+"<br><i>"+lastDate+"</i>]]></description>\n" + "<Point>\n" + "<coordinates>"+userlon+","+userlat+",0</coordinates>\n" + "</Point>\n" + "</Placemark>\n" + "</kml>\n"; out.println(klmString); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); if (name==null){ return; } String message; PrintWriter out; synchronized(this) { lastMessage.setMessage(request.getParameter("message")); lastMessage.setName(name); lastMessage.setUpdated(new Date()); message="<pre>\nLocation: "+lastLocation.getCoords()+ "\nIP address: "+lastLocation.getIpAddress()+ "\nUpdated: "+lastLocation.getUpdated(); } response.setContentType("text/html"); out = response.getWriter(); out.println(message); } } |