【LBS】使用高德地图实现轨迹路线

最近这段时间瞎研究,想做一些LBS的东西。
初步定为一个路线行驶的。
首先选择地图,百度或者高德。
百度之前有做过,还行,所以试用下高德怎样。
首先地理位置容易获得,从android手机的GPS模块就能获取到。
展现的问题。
首先展现必须有路线,有时间,就涉及到一些技术层面的东西, 比如连线。标点什么的。

[img]http://dl2.iteye.com/upload/attachment/0099/4108/208526fd-4860-3073-8d0f-2b802d563158.jpg[/img]

如图所示即显示路线及行程。


--------------------------------------------------
修改为jquery方式调用获取后台地理位置信息
数据库:
his_position
id int,utime date,x double,y double;
后台采用servlet返回json给前端,jquery获取json进行解析并计入到地址。
后台数据库代码:
package com.duduli.li.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JDBCConnect {
static Connection conn = null;

public static Connection getConnect() {
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/route";
String user = "root";
String password = "admin";

try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}

public static void closed() {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


// 获取时间
public String getUpdateTimeJson() {
// Goods g = new Goods();
// StringBuilder sb = new StringBuilder();
JSONArray jsonArray = null;
Statement statement = null;
ResultSet rs = null;
try {
statement = getConnect().createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String sql = "select u_time from his_position";
try {
rs = statement.executeQuery(sql);
List<String> list = new ArrayList<String>();
// sb.append("[");
while(rs.next()){
// member.put("time", rs.getString("u_time"));
// member.put("position", rs.getDouble("x")+","+rs.getDouble("y"));
// sb.append("\""+rs.getString("u_time")+"\",");
list.add(rs.getString("u_time"));
}
// sb.append("]");
jsonArray = JSONArray.fromObject(list);
rs.close();
closed();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return jsonArray.toString();
}


// 获取时间
public String getPositionJson() {
// Goods g = new Goods();
// StringBuilder sb = new StringBuilder();
JSONArray array = new JSONArray();
JSONObject member = new JSONObject();
Statement statement = null;
ResultSet rs = null;
try {
statement = getConnect().createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String sql = "select u_time,x,y from his_position";
try {
rs = statement.executeQuery(sql);
List<String> list = new ArrayList<String>();
while(rs.next()){
member.put("time", rs.getString("u_time"));
member.put("position_x", rs.getDouble("x"));
member.put("position_y", rs.getDouble("y"));
array.add(member);
}
rs.close();
closed();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return array.toString();
}

// 将数据库获得的rs转换称json
public JSONObject rsToJson(ResultSet rs) throws SQLException{
JSONObject json = new JSONObject();

JSONArray array = new JSONArray();
JSONObject member = new JSONObject();


while(rs.next()){
member.put("time", rs.getString("u_time"));
// member.put("position", rs.getDouble("x")+","+rs.getDouble("y"));
array.add(member);
}


// json.put("account", account);
json.put("jsonArray", array);

return json;
}
}


servlet代码:

package com.duduli.li.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.duduli.li.db.JDBCConnect;

/**
* Servlet implementation class RePosition
*/
@WebServlet("/RePosition")
public class RePosition extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public RePosition() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String json = "";
JDBCConnect j = new JDBCConnect();
json = j.getPositionJson();
PrintWriter pw = response.getWriter();
pw.print(json);

System.out.println("json object :"+json.toString());
pw.flush();
pw.close();

}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}

}


前端主要代码:

lineArr = new Array();
timeArr = new Array();

$(function(){
$.ajax({
url:'./RePosition',
data:{},
async: false,
dataType:'json', //很重要!!!. 预期服务器返回的数据类型
success:function(data){
$.each(data, function(i){
timeArr.push(data[i].time);
lineArr.push(new AMap.LngLat(data[i].position_x,data[i].position_y));
});
}
});
});
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值