将数据存放到数据库中,动态的调取比较灵活,数据变动后不需要改变图层的属性表。

此处采用的方法是通过jquery查询数据库,并将数据库的结果生产json串返回给js,在js中动态解析json串增加点至地图上

1、jquery调取查询并处理json

 var data = [];
function getData(vipstatus){
data=[];//清空数据列表
$.get('getVIPStatus.jsp',{vipstatus:vipstatus},function(result){
//alert(result);
var obj = JSON.parse(result);//将传递过来的json串转换成json对象
$.each(obj, function(index){
data.push(this);
});
displayPoints(data);//加载点到地图上,参见另外一篇文章
});
}

说明6-9行需要对返回的json传进行一个处理,因为传过来的数据格式为

 {
"id25" : {
"XMJSNR" : "30万千瓦",
"ZRDW" : "xx市政府",
"XMMC" : "海上风电场H2",
"PROJECT_ID" : "ddafb1a4-668a-4b0c-85f0-081d90778e82",
"LONGITUDE" : "125.22222",
"LATITUDE" : "33.305264"
},
"id24" : {
"XMJSNR" : "年产海洋生物营养保健品系列2万吨、抗癌系列新药1万吨",
"ZRDW" : "xx市政府",
"XMMC" : "海洋生物营养保健品、抗癌新药项目",
"PROJECT_ID" : "d26da381-e7ca-4ab7-8c9c-d09c2b242c27",
"LONGITUDE" : "124.55555",
"LATITUDE" : "33.30223"
}
}

而实际需要的是个json数组,如下:(此处应该可以改进,需要继续优化)

 [{"name":"name1","x":"x1","y":"y1","img":"img1","content":"content1"}...]

2、getVIPStatus.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.marost.tool.*,java.sql.*" %>
<%@ page import="java.util.Map,java.util.HashMap" %>
<%@ page import="org.json.JSONException,org.json.JSONObject" %>
<%
JDBConnection connection = new JDBConnection();
String vipstatus = Chinese.toChinese(request.getParameter("vipstatus"));
//System.out.println(vipname);
JSONObject jsonObj = new JSONObject(); String sql = "SELECT " +
"T_PROJECT_INFO.PROJECT_ID," +
"T_PROJECT_INFO.XMMC," +
"T_PROJECT_LOCATION.LONGITUDE,"+
"T_PROJECT_LOCATION.LATITUDE," +
"T_PROJECT_INFO.XMJSNR," +
"T_PROJECT_INFO.ZRDW " +
"FROM T_PROJECT_INFO ,T_PROJECT_LOCATION " +
"WHERE T_PROJECT_INFO.XMZT = (select code from t_code where code_name='"+vipstatus+"' and SECTION_NAME='项目状态') " +
"AND T_PROJECT_INFO.PROJECT_ID = T_PROJECT_LOCATION.PROJECT_ID";
System.out.println(sql);
try {
ResultSet rs = connection.executeQuery(sql);
while (rs.next()) {
Map <String, String> ingredients = new HashMap <String, String>();
ingredients.put("PROJECT_ID", rs.getString(1));
ingredients.put("name", rs.getString(2));
ingredients.put("x", rs.getString(3));
ingredients.put("y", rs.getString(4));
ingredients.put("XMJSNR", rs.getString(5));
ingredients.put("ZRDW", rs.getString(6));
ingredients.put("img","images/map_pin_fill_20.png");
try {
jsonObj.put("id"+rs.getRow(), ingredients);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.print(deptno+"\t"+dname+"\t"+loc);
//System.out.println(rs.getRow());
}
//System.out.println(jsonObj);
} catch (SQLException e) {
e.printStackTrace();
}
connection.closeConnection();
response.getWriter().print(jsonObj);
%>

说明:生成json时用到org.json.jar

ArcGIS Javascript查询数据库并添加到地图上的更多相关文章

  1. ArcGIS Javascript API 加载高德在线地图扩展

    利用ArcGIS JavaScript API加载高德在线地图的扩展 /** * Created by WanderGIS on 2015/7/15. */ define(["dojo/_b ...

  2. 百度地图公交线路查询,并绘制到地图上并获取所有路径经纬度点(可供echarts 路径图使用)

    github地址 https://github.com/a1115040996/MyHTML/tree/gh-pages/BDMap 源代码 <!DOCTYPE html PUBLIC &quo ...

  3. ArcGIS 在地图上添加标注

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效

    最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...

  5. Google Map API v2 (三)----- 地图上添加标记(Marker),标记info窗口,即指定经纬度获取地址字符串

    接上篇 http://www.cnblogs.com/inkheart0124/p/3536322.html 1,在地图上打个标记 private MarkerOptions mMarkOption; ...

  6. 如何在iOS地图上高效的显示大量数据

    2016-01-13 / 23:02:13 刚才在微信上看到这篇由cocoachina翻译小组成员翻译的文章,觉得还是挺值得参考的,因此转载至此,原文请移步:http://robots.thought ...

  7. [ios3-地图] 如何在iOS地图上高效的显示大量数据 [转]

    [转至:http://blog.csdn.net/pjk1129/article/details/17358337] 原文:How To Efficiently Display Large Amoun ...

  8. iOS进阶_地图上定位的标志——大头针

    一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...

  9. iOS开发之在地图上绘制出你运行的轨迹

    首先我们看下如何在地图上绘制曲线.在Map Kit中提供了一个叫MKPolyline的类,我们可以利用它来绘制曲线,先看个简单的例子. 使用下面代码从一个文件中读取出经纬度,然后创建一个路径:MKPo ...

随机推荐

  1. docker pipework

    #!/bin/bash #auto install docker and Create VM #Define PATH Varablies IPADDR=`ifconfig |grep "B ...

  2. 微信公众号内H5调用微信支付国内服务商模式

    最近在折微信公众号内H5用JSAPI调用微信支付,境内服务商版支付,微信支付给出的官方文档以及SDK不够详细,导至我们走了一些弯路,把他分享出来,我这边主要是用PHP开发,所以未加说的话示例都是PHP ...

  3. 在HTML文件的表单中添加{%csrf_token%}便可以解决问题

    原因是django为了在用户提交表单时防止跨站攻击所做的保护 只需在HTML文件的表单中添加{%csrf_token%}便可以解决问题 ------------------------if判断{% i ...

  4. ThinkPHP 3.2.3 Widget 扩展的使用

    ThinkPHP3.2.3 手册中 Widget 扩展的地址是: http://www.kancloud.cn/manual/thinkphp/1862 Widget 扩展一般用于页面组件的扩展,和自 ...

  5. JMeter之JDBC接口测试

    使用jmeter连接数据库后,即可在jmeter中构造对数据库进行增删改查的请求以对数据库进行测试,以下以mysql数据库为例,演示jmeter连接mysql并进程查询操作的步骤. 1.确保mysql ...

  6. XE5 ImageList的BUG?

    今天做界面, 在imagelist里加载一个带有半透明通道的PNG图, 结果发现图片居然发暗, 如下: 原图: IDE里加载以后的图: 明显变暗...查询了源码, 无果 然后又用2010去测试, 发现 ...

  7. C/C++面试

    1. RTTL 运行时类别识别,在只有一个指向基类的指针或引用时确定一个对象的准确类型. 2.什么是拷贝构造函数 是单个形参的构造函数,实参是与该类同属一类的对象:在类定义中,如果未提供自己的拷贝构造 ...

  8. 纯CSS实现tooltip提示框,CSS箭头及形状

    本片介绍仅用CSS做出tooltip那样的提示框及箭头等形状! 首先介绍一下CSS:after选择器 定义和用法:(参考w3school:after选择器) :after选择器在被选元素的内容后面插入 ...

  9. 反向代理在Web渗透测试中的运用

    在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...

  10. busybox rootfs 启动脚本分析(一)

    imx6文件系统启动脚本分析.开机运行/sbin/init,读取/etc/inittab文件,进行初始化. 参考链接 http://blog.163.com/wghbeyond@126/blog/st ...