标签:javascript openlayers webgis 前端开发 地理信息
这两天在图书馆边看jsp边查边写代码,改完了老板交给的任务,也顺带实现了查询的效果,先来看下最终实现的效果图:
整个实现思路是:服务器端采用servlet+mysql模糊查询,servlet返回json数据,客户端解析json数据以表格形式显示并根据经纬度在地图上进行标注。
package edu.whu.vge.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import edu.whu.vge.dbUtil.PoiDBBean;
public class SchoolQueryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/*
* (non-Javadoc)
*
* @see
* javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
* , javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 设置输出内容格式和编码
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 设置接收参数编码格式
response.setCharacterEncoding("utf-8");
String schoolID = request.getParameter("schoolID");
String schoolName = request.getParameter("schoolName");
String schoolAddress = request.getParameter("schoolAddress");
String sql = "select * from school where ID like " + "\'" + "%"
+ schoolID + "%" + "\'" + " and name like " + "\'" + "%"
+ schoolName + "%" + "\'" + " and address like " + "\'" + "%"
+ schoolAddress + "%" + "\'";
PoiDBBean poiDBBean = new PoiDBBean();
//
JSONArray array = new JSONArray();
try {
ResultSet resultSet = poiDBBean.query(sql);
while (resultSet.next()) {
JSONObject object = new JSONObject()
.element("schoolName", resultSet.getString(4))
.element("schoolAddress", resultSet.getString(5))
.element("schoolTel", resultSet.getString(6))
.element("schoolKind", resultSet.getString(7))
.element("schoolLat", resultSet.getDouble(3))
.element("schoolLon", resultSet.getDouble(2));
array.add(object);
}
out.println(array.toString());
System.out.println(array.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
poiDBBean.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
这里看一下servlet的知识就可以了。 $.ajax({
url: "http://127.0.0.1:8080/taxGIS/servlet/SchoolQueryServlet",
type: 'post',
dataType: 'json',
data: {
schoolID: $("#schoolID").val(),
schoolName: $("#schoolName").val(),
schoolAddress: $("#schoolAddress").val()
},
success: function(jsonData){
//查询返回数据后标注在地图上并启用查询结果显示对话框
patchAddMarker(jsonData);
showQueryRes(jsonData);
}
});
[
{
"schoolName": "城阳区第二实验中学",
"schoolAddress": "山东省青岛市城阳区礼阳路107号",
"schoolTel": "0532-81156666",
"schoolKind": "教育学校:中学",
"schoolLat": 36.28491,
"schoolLon": 120.40238
},
{
"schoolName": "小寨子幼儿园",
"schoolAddress": "山东省青岛市城阳区 ",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 36.29791,
"schoolLon": 120.39172
},
{
"schoolName": "新太阳托管中心",
"schoolAddress": "山东省青岛市市北区嘉兴路11-2",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 36.10921,
"schoolLon": 120.35659
},
{
"schoolName": "金苹果幼儿园(香江医院西)",
"schoolAddress": "山东省青岛市黄岛区香江路311号(香江医院西)",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 35.97422,
"schoolLon": 120.16204
},
{
"schoolName": "锦桥社区托辅中心",
"schoolAddress": "山东省青岛市黄岛区王家石桥村锦桥社区",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 35.87418,
"schoolLon": 120.00619
},
{
"schoolName": "艺星幼儿园",
"schoolAddress": "山东省青岛市城阳区岙东北路541",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 36.33419,
"schoolLon": 120.2701
},
{
"schoolName": "隐珠街道办事处中心幼儿园",
"schoolAddress": "山东省青岛市胶南市灵海路126号",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 35.89869,
"schoolLon": 120.0444
},
{
"schoolName": "慧诺托管家园",
"schoolAddress": "山东省青岛市黄岛区虹桥大街83-5",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 35.87653,
"schoolLon": 120.00338
},
{
"schoolName": "四方区尚志幼儿园",
"schoolAddress": "山东省青岛市市北区尚志路4",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 36.11456,
"schoolLon": 120.35691
},
{
"schoolName": "宝贝之家亲子园",
"schoolAddress": "山东省青岛市崂山区松岭路58-1",
"schoolTel": "(0532)88891918,(0532)88893227",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 36.10406,
"schoolLon": 120.47963
},
{
"schoolName": "天真幼儿园(灵山卫街道办事处人大工作办公室北)",
"schoolAddress": "山东省青岛市黄岛区329省道(灵山卫街道办事处人大工作办公室北)",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 35.93806,
"schoolLon": 120.15021
},
{
"schoolName": "城阳区城阳街道皂户幼儿园",
"schoolAddress": "山东省青岛市城阳区正阳中路",
"schoolTel": " ",
"schoolKind": "教育学校:幼儿园",
"schoolLat": 36.30772,
"schoolLon": 120.35847
},
{
"schoolName": "胶南市王台镇石梁小学",
"schoolAddress": "山东省青岛市黄岛区 ",
"schoolTel": "0532-83116752",
"schoolKind": "教育学校:小学",
"schoolLat": 36.07053,
"schoolLon": 120.03613
}
]function patchAddMarker(jsonData){
var jsonArray = eval(jsonData);
for (var i = 0; i < jsonArray.length; i++) {
var schoolName = jsonArray[i].schoolName;
var schoolAddress = jsonArray[i].schoolAddress;
var schoolTel = jsonArray[i].schoolTel;
var schoolKind = jsonArray[i].schoolKind;
var schoolLat = jsonArray[i].schoolLat;
var schoolLon = jsonArray[i].schoolLon;
var lonlat = corTransform(schoolLon, schoolLat);
var lonLatStr = lonlat.toShortString();
var lonLatArr = lonLatStr.split(",");
var lon = lonLatArr[0];
var lat = lonLatArr[1];
var att = {
名称: schoolName,
地址: schoolAddress,
电话: schoolTel,
类别: schoolKind
};
addMarke(lon, lat, att);
}
} <script src="lib/jquery/js/jquery-1.10.2.js"></script>
<script src="lib/jquery-easyui-1.4.2/jquery.easyui.min.js"></script>
<script src="lib/jquery/js/jquery-ui-1.10.4.custom.js"></script>3、前端开发用到的知识比较多而且杂,不像C#、java开发那般只用一种语言。刚开始可能会觉得手足无措,但是只要用心,入了门后面就会轻松些了。OpenLayers学习笔记8——使用servlet实现从数据库获取数据并标注
标签:javascript openlayers webgis 前端开发 地理信息
原文地址:http://blog.csdn.net/giser_whu/article/details/46569603