- 浏览: 121547 次
- 性别:
- 来自: 江苏
博客专栏
-
玩懂Log,打开Andro...
浏览量:10567
文章分类
最新评论
-
twlkyao:
这个貌似是StackOverflow上的http://stac ...
getApplicationContext() 与 Activity.this -
相忘于回忆里:
顶~ 就是我的问题。。
坑爹的minSdkVersion配置 -
ylzyd12345:
wangxiaolongbob 写道我有不同意见,我认为作者一 ...
Eclipse控制台中输入中文保存到文件中,字符编码转换测试 -
wangxiaolongbob:
我有不同意见,我认为作者一开始的2幅图把编码和解码搞反了。我认 ...
Eclipse控制台中输入中文保存到文件中,字符编码转换测试 -
xdh725:
确实坑爹啊 困扰很久
android 4.0 HttpURLConnection. getInputStream() 为空的问题
前台页面,两个功能一个是定位,一个是轨迹回放。定位的功能是实时访问数据库,每隔6秒访问一次,功能还没有完成,查询出来的数据不是实时更新的,模拟的时候是返回好几条数据,所以定位就会显示几个位置。不看也罢;轨迹回放则访问的是服务器上的XML文件,很好的实现了:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Google 地图 API 示例: GGeoXml KML 叠加层</title> <script src="http://ditu.google.cn/maps?file=api&v=2&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN" type="text/javascript"> </script> <script type="text/javascript"> var map; var geoXml; var status = "running"; var TruckIcon = new GIcon(G_DEFAULT_ICON); TruckIcon.image = "truck.png"; TruckIcon.iconSize = new GSize(32, 22); markerOptions = { icon: TruckIcon }; function initialize(){ if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map_canvas")); map.setCenter(new GLatLng(24.414333333333, 120.726366666667), 12); map.addControl(new GMapTypeControl()); map.addControl(new GLargeMapControl()); map.enableScrollWheelZoom(); } } // Stops and starts the tracking function function toggleStatus(){ if (status == "stopped") { status = "running"; document.getElementById("statusLink").value = "Running"; } else { status = "stopped"; document.getElementById("statusLink").value = "Stopped"; } } // Refresh map function function refreshMap(map){ if (status == "stopped") { window.setTimeout(function(){ refreshMap(map) }, 6000); return; } var point; // AJAX XML Data Download and marker placement, straight // from Google API documentation var request = GXmlHttp.create(); request.open("POST", "http://localhost:8080/GPS/getdate", true); request.onreadystatechange = function(){ if (request.readyState == 4) { map.clearOverlays(); var xmlDoc = request.responseXML; var markers = xmlDoc.documentElement.getElementsByTagName("mark"); for (var i = 0; i < markers.length; i++) { point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); var marker = new GMarker(point,markerOptions); map.addOverlay(marker); } var startPoint = new GLatLng(parseFloat(markers[0].getAttribute("lat")), parseFloat(markers[0].getAttribute("lng"))); map.openInfoWindowHtml(startPoint,"Start Place"); map.setCenter(point); } } request.send(null); // Reloads map every 6 seconds window.setTimeout(function(){ refreshMap(map) }, 6000); } function guiji(){ var point; // AJAX XML Data Download and marker placement, straight // from Google API documentation var request = GXmlHttp.create(); request.open("POST", "http://localhost:8080/GPS/getdate?method='guiji'", true); request.onreadystatechange = function(){ if (request.readyState == 4) { map.clearOverlays(); var xmlDoc = request.responseXML; var markers = xmlDoc.documentElement.getElementsByTagName("mark"); for (var i = 0; i < markers.length; i++) { point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); var marker = new GMarker(point,markerOptions); map.addOverlay(marker); } var startPoint = new GLatLng(parseFloat(markers[0].getAttribute("lat")), parseFloat(markers[0].getAttribute("lng"))); map.openInfoWindowHtml(startPoint,"车辆开始的位置"); map.setCenter(point); } } request.send(null); } </script> </head> <body onload="initialize();"> <b><a href="#" onclick="refreshMap(map)();">定位</a></b>: <input type="submit" value="开始" onclick="toggleStatus();"><input type="submit" value="结束" onclick="toggleStatus();"><input type="text" value="Running" id="statusLink" size="10"> <br> <b><a href="#" onclick="guiji();">轨迹</a></b> <div id="map_canvas" style="width: 100%; height: 650px; float:left; border: 1px solid black;"> </div> </body> </html>
后台:
- 写连接mysql的配置文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/gmaptracker user=root password=root characterEncoding=UTF-8
- 一个连接mysql的工具类。不知道写的对不对,感觉写的不好,有错误的地方请大虾们指出
package util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JdbcMySql { static Properties props = null; private JdbcMySql() { } static { props = getProperties(); } public static Connection getConn() { Connection conn = null; if (props != null) { // 读取出属性文件里面的内容 String driver = props.getProperty("driver"); String url = props.getProperty("url"); String user = props.getProperty("user"); String password = props.getProperty("password"); String characterEncoding = props.getProperty("characterEncoding"); try { Class.forName("com.mysql.jdbc.Driver"); Class.forName(driver);// 加载驱动 } catch (ClassNotFoundException e1) { System.out.println("驱动没有找到"); e1.printStackTrace(); } try { conn = DriverManager.getConnection(url + "?characterEncoding=" + characterEncoding, user, password); } catch (SQLException e) { System.out.println("建立连接出错"); e.printStackTrace(); }// 建立连接 } return conn; } public static void free(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public static Properties getProperties() { Properties props = new Properties(); InputStream is = null; try { is = JdbcMySql.class.getResourceAsStream("/jdbc_mysql.properties"); props.load(is); } catch (Exception ex) { ex.printStackTrace(); return null; } finally { if (is != null) try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return props; } }
- 读写XML文件工具类
package util; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class XMLUtil { public static Document getDocument() { Connection conn = null; Statement st = null; ResultSet rs = null; String sql = "select * from gmaptracker"; Document document = null; Element root = null; Element category = null; Element latElement = null; Element lngElement = null; double lat = 0.0; double lng = 0.0; try { conn = JdbcMySql.getConn(); st = conn.createStatement(); rs = st.executeQuery(sql); document = DocumentHelper.createDocument(); //生成一个接点 root = document.addElement("marks"); /* * <?xml version="1.0" encoding="UTF-8"?> <marks> <mark id="xx" lat="xx" lng="xx"/> </marks> */ while (rs.next()) { category = root.addElement("mark"); lat = rs.getDouble(4); latElement = category.addElement("lat"); latElement.addText(Double.toString(lat)); lng = rs.getDouble(5); lngElement = category.addElement("lng"); lngElement.addText(Double.toString(lng)); } } catch (SQLException e) { e.printStackTrace(); } finally { JdbcMySql.free(rs, st, conn); } return document; } /** * 写入xml文件地址 * @param document 所属要写入的内容 * @param outFile 文件存放的地址 */ public static void writeDocument(Document document, String outFile){ try{ //读取文件 FileWriter fileWriter = new FileWriter(outFile); //设置文件编码 OutputFormat xmlFormat = new OutputFormat(); xmlFormat.setEncoding("UTF-8"); //创建写文件方法 XMLWriter xmlWriter = new XMLWriter(fileWriter,xmlFormat); //写入文件 xmlWriter.write(document); //关闭 xmlWriter.close(); }catch(IOException e){ System.out.println("文件没有找到"); e.printStackTrace(); } } public static Document readDocument(String outFile){ Document document = null; try{ SAXReader reader = new SAXReader(); document = reader.read(new File(outFile)); }catch (DocumentException e) { e.printStackTrace(); System.out.println("文件读取出错"); } return document; } }
- 一个servlet,相应前台ajax请求,返回xml数据。
package gps.demo; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import util.JdbcMySql; import util.XMLUtil; /** * Servlet implementation class Gps */ public class Gps extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void init() throws ServletException { // TODO Auto-generated method stub super.init(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub Connection conn = null; Statement st = null; ResultSet rs = null; String sql = "select * from gmaptracker"; Document document = null; Element root = null; Element category = null; int id = 0; double lat = 0.0; double lng = 0.0; String carOwner = null; String method = request.getParameter("method"); System.out.print(method); if(method.equals("guiji")) { //测试,先在D盘写入车辆轨迹坐标 XMLUtil.writeDocument(XMLUtil.getDocument(), "D:\\a.xml"); //读取XML document = XMLUtil.readDocument("D:\\a.xml"); response.setContentType("text/xml"); response.getWriter().write(document.asXML()); } else { try { conn = JdbcMySql.getConn(); st = conn.createStatement(); rs = st.executeQuery(sql); document = DocumentHelper.createDocument(); //生成一个接点 root = document.addElement("marks"); /* * <?xml version="1.0" encoding="UTF-8"?> <marks> <mark id="xx" lat="xx" lng="xx"/> </marks> */ while (rs.next()) { category = root.addElement("mark"); carOwner = rs.getString(3); category.addAttribute("owner", carOwner); id = rs.getInt(1); category.addAttribute("id",Integer.toString(id)); lat = rs.getDouble(4); category.addAttribute("lat", Double.toString(lat)); lng = rs.getDouble(5); category.addAttribute("lng", Double.toString(lng)); } System.out.println(document.asXML()); //这一句,必须加上 response.setContentType("text/xml"); response.getWriter().write(document.asXML()); } catch (SQLException e) { e.printStackTrace(); } finally { JdbcMySql.free(rs, st, conn); } } } }
- web.xml配置servlet
<servlet> <servlet-name>Gps</servlet-name> <servlet-class>gps.demo.Gps</servlet-class> </servlet> <servlet-mapping> <servlet-name>Gps</servlet-name> <url-pattern>/getdate</url-pattern> </servlet-mapping>
- 附件内容:xml的的操作使用的dom4J,所以要导入包;前台页面中标注图片truck.png放在和html文件同一目录下;数据库表的sql语句。
- gmaptracker.rar (283.7 KB)
- 下载次数: 316
发表评论
-
聊聊信息差赚钱
2022-11-08 14:13 127在某条上看到一部视 ... -
简单判断编码解码对错
2011-12-31 15:02 1203出现乱码情况 数据是你好:如果显示的是??。那 ... -
EF BB BF Unicode签名BOM(Byte Order Mark)
2011-12-31 14:16 1232近日在调测一个UTF8编码的中文Zen Cart网站时遇到一件 ... -
南京诚迈 待遇
2011-12-31 10:33 01.10日入职 1.4日 qigaofeng00 ... -
sun.jnu.encoding与file.encoding
2011-12-29 22:41 2096我做了一些调查编码,并按照我的分析 sun.jnu. ... -
传业内多家游戏网站被黑 用户数据遭泄露(转)这次真的是地震了。
2011-12-22 11:19 1632----------------------------- ... -
黑客公开CSDN网站数据库 600余万用户资料泄露 (转)---这个消息太令人震惊了!!!
2011-12-21 16:31 2033http://0bad.com/csdn.php :大家可以 ... -
南京诚迈公司面试
2011-12-15 12:01 02011.12.15日, 南京诚迈公司面试:知识点: ... -
“皮之不存,毛将焉附”---看2030肢解中国-美国全球战略与中国危机(戴旭)后感
2010-03-08 12:53 1656国将亡,汝未知。视频地址:http://www.56.com/ ... -
2010计划
2010-02-21 11:50 4437学习英语--- 业务需要:做软件外包。很多项目都是 ...
相关推荐
利用google map实现轨迹回放利用google map实现轨迹回放
为了实现回放功能,我们需要对轨迹数据进行处理,包括读取数据源(可能是JSON、KML、GPX等格式),解析出每个位置点的经纬度和时间戳。然后,我们可以创建一个时间轴控件,用于控制轨迹的播放速度和方向。JavaScript...
通过这个实践项目,你可以学习到Web开发中的文件读取、数据解析、图像处理以及地图API应用等多个方面的知识。这将有助于提升你的前端开发技能,特别是在地理信息系统(GIS)相关的项目中。记得在实际操作时,遵循...
Google Maps API是Google提供的一项强大的服务,允许开发者在自己的应用程序中集成地图功能,进行地理位置相关的开发。这个"Google Maps API编程资源大全"包含了丰富的资料,帮助开发者深入理解和使用这一技术。 ...
2. **事件**:Google Maps API提供了丰富的事件监听器,如点击地图、拖动地图、缩放地图等,开发者可以据此响应用户的交互行为,实现动态的地图应用。 3. **控件**:API支持添加自定义或预定义的控件,如缩放控件、...
要实现轨迹回放,需要使用Google Maps JavaScript API,特别是其Marker和Polyline对象。Marker用于表示单个位置点,而Polyline则用于连接多个点形成轨迹线。开发者需要动态创建和更新这两个对象,以反映轨迹的变化。...
Google Maps API是Google提供的一项强大服务,允许开发者将地图功能集成到自己的网站或应用程序中,实现地图展示、定位、路线规划等多种功能。下面我们将详细探讨这个API的一些核心知识点。 一、Google Maps API...
Google Maps API V3 是 Google Maps 提供的一款强大的地图应用程序接口,允许开发者在网站或应用程序中轻松嵌入谷歌地图。该 API 的 JavaScript 版本提供了丰富的功能和灵活的配置选项,帮助开发者快速构建复杂的...
Google Maps API是Google提供的一项服务,允许开发者将地图功能集成到自己的网站或应用程序中,实现自定义地图、定位、导航、地理编码等多种功能。 在压缩包文件"Google Maps API开发大全code.rar"中,你可能会找到...
Google Maps API(应用程序编程接口)是Google提供的一项服务,允许开发者在自己的网页或应用中嵌入交互式地图。版本3,也称为V3,是Google Maps API的最新版本,它带来了许多改进和优化,包括性能提升、简化接口...
总的来说,C# GMap地图开发提供了一套全面的工具,可以实现复杂的地图应用,包括轨迹回放、自定义图标和线路颜色等功能。开发者需要掌握文件解析、数据结构转换、地图服务接口调用以及UI交互设计等多方面技能,以...
"基于Google Maps API的网络地图服务系统的研究与应用" 摘要:本文研究了基于Google Maps API的网络地图服务系统的设计与实现。Google Maps API是一种开放式、低成本和易用的API,能够快速构建小型的WebGIS服务。...
Java 实现 Google Maps API 是一个将谷歌地图服务集成到Java应用程序中的过程,它允许开发者利用谷歌地图的强大功能,如定位、路线规划、地理编码、覆盖图层等。本篇文章将深入探讨如何通过Java来调用Google Maps ...
Google Maps API android demo Eciplse project source code and javacript version Google Maps API and Place Search example html.
获取 Google Maps API Key 在 Android 开发中,获取 Google Maps API Key 是一个重要的步骤,特别是...通过获取证书指纹(SHA1)和创建 Google Maps API Key,可以成功地将 Google Maps 集成到 Android 应用程序中。
Google Maps API V3 是谷歌为开发者提供的一个强大工具,用于在网站或应用程序中集成交互式地图功能。这个API允许开发人员自定义地图显示的内容、样式以及交互方式,从而构建出各种基于地理位置的应用。在Google ...
除了基础功能之外,Google Maps API 还提供了更高级的功能,让开发者可以实现更加复杂的应用场景。 **异步 HTTP 通信:** - **GXmlHttp 和 GDownloadUrl:** 这两个工具可以用于发起异步 HTTP 请求,获取远程服务器...
在《Google API开发详解:Google Maps与Google Earth双剑合璧》这本书中,不仅会介绍这些基础知识,还会探讨如何将Google Maps API与Google Earth API结合使用,创建更具视觉冲击力的3D地图应用。Google Earth API...