`
fatedgar
  • 浏览: 135234 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

百度地图画连线

阅读更多

  附件中的地图连线.rar是简单的连线html例子。

  在百度上把几个坐标按数据库中查询出来的时间顺序直线连接起来

<%@ include file="../../jsp/common/getSession.jsp"%>
<%@ include file="../../jsp/common/standAloneJSHeader.jsp" %>

<html>
<head>
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}
</style>
<script type="text/javascript" src="../../script/jquery-1.4.3.min.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.3"></script>
<script type="text/javascript" src="../../script/json2.js"></script>
<%  	
	String sfzh = Util.NVLL(request.getParameter("sfzh"));
	String selectDate = Util.NVLL(request.getParameter("selectDate"));
	String pp=sfzh+"|"+selectDate;
%>
<script type="text/javascript">
var map;
function initialize() {
  // 百度地图API功能
  map = new BMap.Map("map_canvas");
  map.addControl(new BMap.NavigationControl());               // 添加平移缩放控件
  map.addControl(new BMap.ScaleControl());                    // 添加比例尺控件
  map.addControl(new BMap.OverviewMapControl());              //添加缩略地图控件
  map.enableScrollWheelZoom();                            //启用滚轮放大缩小
  map.addControl(new BMap.MapTypeControl());          //添加地图类型控件
  map.centerAndZoom(new BMap.Point(108.953456, 34.275799),15);

  getMarkerArr(map);
}

function getMarkerArr(map) { 
	$.ajax({
		type: 'POST',
		url: '../../../servlet/ajax',
		data: {cmd:"ajax",method:"com.happysys.fatedgar.GetJson.getJsonOfRoute",p:"<%=pp%>"},
		success: function(data){
			if(data=="[]")
				alert("<%=selectDate%>没有数据!");
			showToolAutoDef(map,data);
		}
    	});
}
var markerArray = new Array();
function showToolAutoDef(map,data) {
	var myobj=eval(data);  
	var points = new Array();
	map.centerAndZoom(new BMap.Point(myobj[1].along, myobj[1].alat),13);
	for(var i=0;i<myobj.length;i++){  
	   var lat=myobj[i].alat;
	   var lng=myobj[i].along;
	   var war=myobj[i].war;
	   var bat=myobj[i].bat;
	   var temp=myobj[i].temp;
	   var bdhm=myobj[i].bdhm;
	   var sfzh=myobj[i].sfzh;
	   var humidity=myobj[i].humidity;
	   var scount=myobj[i].scount;
	   var created_date=myobj[i].created_date;
	   //alert(lng+" || "+lat);
	   var point = new BMap.Point(lng,lat);
	   var iconImg = createIcon();
	   if(i==0)
	   	iconImg = createStarIcon();
	   if(i==(myobj.length-1))
	   	iconImg = createEndIcon();
	   if(war!="0")
	   	iconImg = createWarIcon();
	   var marker = new BMap.Marker(point,{icon:iconImg});
	   map.addOverlay(marker);
	   
	   if(i==0){
	   	marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
	   }
	   (function(){
			var index = i;
			var _iw = createInfoWindow(i,data);
			var _marker = marker;
			
			_marker.addEventListener("click",function(){
			    this.openInfoWindow(_iw);
		    });
		    
		})()
	   points.push(point);
	}  
	//alert("points长度:"+points.length);
	drawPolyline(map, points);
}

/**
 * 画线
 * @param bMap
 * @param points
 */
function drawPolyline(bMap, points) {
	if (points==null || points.length<=1) {
		return;
	}
	bMap.addOverlay(new BMap.Polyline(points, {
		strokeColor : "red",
		strokeWeight : 3,
		strokeOpacity : 0.5
	})); // 画线
}

//创建一个Icon
function createIcon(){
	var icon = new BMap.Icon("../../images/user.png", 
        	new BMap.Size(16, 16), {anchor: new BMap.Size(5, 20)});
	return icon;
}
function createWarIcon(){
	var icon = new BMap.Icon("../../images/rss.png", 
        	new BMap.Size(20, 20), {anchor: new BMap.Size(5, 20)});
	return icon;
}
function createStarIcon(){
	var icon = new BMap.Icon("../../images/forward.png", 
        	new BMap.Size(20, 20), {anchor: new BMap.Size(5, 20)});
	return icon;
}
function createEndIcon(){
	var icon = new BMap.Icon("../../images/closed.png", 
        	new BMap.Size(20, 20), {anchor: new BMap.Size(5, 20)});
	return icon;
}
//创建InfoWindow
function createInfoWindow(i,data){
	var myobj=eval(data);  
	var lat=myobj[i].alat;
	   var lng=myobj[i].along;
	   var war=myobj[i].war;
	   var bat=myobj[i].bat;
	   var temp=myobj[i].temp;
	   var bdhm=myobj[i].bdhm;
	   var sfzh=myobj[i].sfzh;
	   var humidity=myobj[i].humidity;
	   var scount=myobj[i].scount;
	   var created_date=myobj[i].created_date;

	   if(war!="0"){
		war="<font color='red'><b>请注意!老人已摔倒!</b></font>";
	   }else{
		war="<font color='green'>正常。</font>";
	   }
	   if(scount=="")
	   	scount=0;
	   
	   var iw = new BMap.InfoWindow("<div class='marker_content'><font size=2>"
		   	   	   	   				+"时&nbsp;&nbsp;&nbsp;&nbsp;间:&nbsp;&nbsp;"+created_date+"<br>"
		   	   	   	   				+"提&nbsp;&nbsp;&nbsp;&nbsp;醒:&nbsp;&nbsp;"+war+"<br>"
		   	   	   	   				+"经&nbsp;纬&nbsp;度:&nbsp;&nbsp;("+lng+","+lat+")<br>"
		   	   	   	   				+"剩余电量:&nbsp;&nbsp;"+bat+"%<br>"
		   	   	   	   				+"湿&nbsp;&nbsp;&nbsp;&nbsp;度:&nbsp;&nbsp;"+temp+"%rh<br>"
		   	   	   	   				+"温&nbsp;&nbsp;&nbsp;&nbsp;度:&nbsp;&nbsp;"+temp+"℃<br>"
		   	   	   	   				+"绑定号码:&nbsp;&nbsp;"+bdhm+"<br>"
		   	   	   	   				+"已行走步数:&nbsp;&nbsp;"+scount+"&nbsp;步<br>"
		   	   	   					+"</font></div>"
					+"<br>");
	 return iw;
}

 function updateAct(){
	getMarkerArr();
 }
    	
 setInterval("updateAct();",300000);   
</script>
</head>
<body onload="initialize()">
<input id="sfzh" name="sfzh" type="hidden" value="<%=sfzh%>" />
 <div id="map_canvas" style="width: 100%; height: 100%;"></div>
  
  
</body>
</html>

 下面是service端代码

package com.happysys.fatedgar;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;

import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;

import com.happysys.erp.webapps.util.DBResultSet;
import com.happysys.erp.webapps.util.Util;

public class GetJson {
	public static String getJsonOfRoute(String pp){
		
		StringBuffer sb=new StringBuffer();
		try{
			String pps[]=Util.parseList(pp, "|");
			String sfzh=pps[0];
			String selectDate=pps[1];
			//sfz="61010219910604367X";
			//selectDate="2014-05-10";
			if("".equals(selectDate)){
				Calendar cal=Calendar.getInstance();
				int year = cal.get(Calendar.YEAR);    //获取年
				int month = cal.get(Calendar.MONTH) + 1;   //获取月份,0表示1月份
				int day = cal.get(Calendar.DAY_OF_MONTH);    //获取当前天数
				selectDate=year + "-" + month + "-"+ day;
			}
			DBResultSet rs1 = new  DBResultSet();
			String sql="select id,key1,war,bat,temp,bdhm,sfzh,humidity,scount,alat,along,created_date from stepcount where sfzh='"+sfzh+"' and created_date between to_date('"+selectDate+" 00:00:00','yyyy-mm-dd HH24:MI:SS') and to_date('"+selectDate+" 23:59:59','yyyy-mm-dd HH24:MI:SS') order by created_date desc";
			ResultSet rs = rs1.select(sql, new Object[]{}, 0,0);
			JSONArray jsonarr=new JSONArray();
			while(rs.next()) {
					String id = Util.NVLL(rs.getString(1));//主键
					String key1 = Util.NVLL(rs.getString(2));//KEY
					String war = Util.NVLL(rs.getString(3));//报警状态
					String bat = Util.NVLL(rs.getString(4));//电池电量
					String temp = Util.NVLL(rs.getString(5));//产品温度
					String bdhm = Util.NVLL(rs.getString(6));//绑定号码
					String sfzh1 = Util.NVLL(rs.getString(7));//身份证号码
					String humidity = Util.NVLL(rs.getString(8));//湿度
					String scount = Util.NVLL(rs.getString(9));//步数
					String alat = Util.NVLL(rs.getString(10));//纬度坐标(默认)
					String along = Util.NVLL(rs.getString(11));//经度坐标(默认)
					//String coord=CoordChange.CChange(along, alat,"0","4");
					String coord=CoordChange.Gps2Baidu(along, alat);//gps坐标转换百度
					String coords[]=Util.parseList(coord, "|");
					along=coords[0];
					alat=coords[1];
					String created_date = Util.NVLL(rs.getString(12));//时间
					try{
						JSONObject json=new JSONObject();
						json.put("id", id);
						json.put("key1", key1);
						json.put("war", war);
						json.put("bat", bat);
						json.put("temp", temp);
						json.put("bdhm", bdhm);
						json.put("sfzh", sfzh1);
						json.put("humidity", humidity);
						json.put("scount", scount);
						json.put("alat", alat);
						json.put("along", along);
						json.put("created_date", created_date);
						jsonarr.put(json);				
					}catch(Exception e1){
						e1.printStackTrace();
					}
			}
			sb.append(jsonarr);
			rs.close();
			rs1.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return sb.toString();
	}
}

 备注:

其中一些方法就没有贴出来了。大致的处理结果大家都能猜到,方法中的:

Util.parseList(pp, "|");这个处理的结果是已“|”分隔String。

String coord=CoordChange.Gps2Baidu(along, alat);这个方法可以查阅:

 经纬度转换(gps|百度|google)http://fatedgar.iteye.com/admin/blogs/2068259

 

 

 

 

 

分享到:
评论

相关推荐

    百度地图marker动画的实现

    在开发Web应用时,地图组件常常扮演着重要角色,而百度地图API则为开发者提供了丰富的功能,包括在地图上添加标记(marker)。本教程将详细讲解如何利用百度地图API和CSS3来实现marker的动画效果。 首先,让我们...

    百度地图显示多点坐标并连线显示用户轨迹

    读取移动端存入数据库的坐标位置信息显示在百度地图上并连线显示用户轨迹。 程序为mysql数据库,location.sql为数据库导出文件 数据库连接信息见BaiduMap\src\com\pandora\db\SqlConnection.java 运行环境:...

    百度地图中的动态画线

    百度地图中动态画线, 也可以自己变通从数据库里面获取动态的点之后进行画线

    百度地图长按、 地图上画线连接各点的简单demo

    本文将详细解析"百度地图长按、地图上画线连接各点的简单demo"这一主题,主要关注如何实现地图上的长按事件以及如何绘制线条连接地图上的多个点。 首先,我们要理解地图长按事件。在Android开发中,通常我们使用...

    百度地图显示多点连线+数字标注

    标题中的“百度地图显示多点连线+数字标注”是指在百度地图API的应用中,通过编程方式将多个地理位置点连接起来,并在每个点上添加数字标注,以实现地图上的复杂信息展示。这种技术常用于路径规划、地理数据分析或者...

    百度地图api 轨迹回放

    在本文中,我们将深入探讨如何使用百度地图API实现轨迹回放功能。百度地图API是一个强大的工具,它允许开发者集成地图功能到网页应用中,包括显示地图、定位、路径规划等。在JavaScript环境下,我们可以利用其...

    百度地图多点+画连接线+数字标注

    标题“百度地图多点+画连接线+数字标注”指的是在百度地图API上实现一个功能,即能够在地图上显示多个点,并且用线段将这些点连接起来,同时对每个点进行数字标注。这个功能常见于地理信息系统(GIS)应用中,例如...

    地图上绘制点和连线

    绘制地图点通常涉及到地图API的使用,如Google Maps API、高德地图API或百度地图API。这些API提供了JavaScript库,允许开发者在网页上创建交互式地图,并在地图上添加标记(Markers)来表示特定的经纬度位置。例如,...

    html用百度的地图,显示指定坐标点并提示坐标点信息

    在HTML页面中集成百度地图,可以利用百度地图API来实现显示特定坐标点并提供信息提示的功能。这是一个常见的地理信息系统(GIS)应用,特别是在网站开发中,用于定位、导航或者展示地理位置信息。以下是对这个主题的...

    vue项目中:百度地图引用mapV,实现两点间的曲线,及曲线上点的流动。

    vue项目中:百度地图引用mapV,实现两点间的曲线,及曲线上点的流动;详解请见:https://blog.csdn.net/Hei_lovely_cat/article/details/106919514

    微信小程序地图实现展示线路

    微信小程序中实现地图功能是提供位置相关服务的一种重要方式,它允许开发者在应用中嵌入地图组件,并通过编程接口完成各种地图操作,如地点展示、路径规划、位置标注等。在微信小程序中展示线路主要涉及到几个关键点...

    BaiduMap.zip_baiduMap_tapewad_地图画轨迹

    本话题主要聚焦于如何利用百度地图API实现地图上的轨迹绘制功能,这通常被称为“地图路书”。我们将深入探讨“BaiduMap.zip_baiduMap_tapewad_地图画轨迹”这个项目中的关键知识点。 首先,我们需要理解“BaiduMap....

    vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解

    在Vue开发中,有时我们需要在地图上绘制带有方向指示的折线,比如使用vue-baidu-map库。然而,根据描述,vue-baidu-map的BmPolyline组件默认并不支持直接添加带箭头的纹理。这个问题源于BmPolyline组件的源代码没有...

    百度鹰眼服务

    【百度鹰眼服务】是百度地图提供的一项高级位置服务,主要功能是实现精确的路径追踪、实时定位以及轨迹画线。这项服务对于物流、交通、配送、资产管理等领域的应用至关重要,因为它能帮助企业和开发者准确地追踪移动...

    在vue中高德地图引入和轨迹的绘制的实现

    (百度上有高德地图引入与配置方法,这里就不详细介绍); 1) npm install vue-amap --save 2) import VueAMap from ‘vue-amap' Vue.use(VueAMap); VueAMap.initAMapApiLoader({ key: ‘********************',/...

    vue-openlayer-master.zip

    在这个项目中,开发者不仅可能实现了绘制圆形,还可能实现了贴图(可能通过使用瓦片图层或图像源)以及自定义连线(可能是通过创建线性几何对象并附加自定义样式)。这些图形可能用于表示特定地理位置、标记兴趣点...

    PoiMap.zip

    百度地图,实现GPS轨迹绘制 实现思路: 1.根据经纬度实现车辆轨迹绘制 2.使用百度地图API的两个覆盖物实现,Polyline(折线)绘制轨迹,Marker(图标)绘制小车图标 3.将每两个坐标间连线起来,形成连贯的轨迹线路 ...

    echarts 2.2.7修改版. 加入axisline的箭头样式

    ECharts 是一个由百度开发的开源JavaScript数据可视化库,它基于HTML5 Canvas,适用于各种浏览器和操作系统,提供了丰富的图表类型,如柱状图、折线图、饼图、散点图等,支持自定义交互和视觉效果。在ECharts 2.2.7...

Global site tag (gtag.js) - Google Analytics