百度地图API之地图加载方式(同步、异步)

同步加载方式:

<%@page import="com.util.json.JSONArray"%>
<%@page import="com.util.json.JSONObject"%>
<%@page import="com.bean.CheckAttenceBean"%>
<%@page import="java.util.List"%>
<%@page import="com.service.impl.CheckAttenceService"%>
<%@page import="com.service.ICheckAttenceService"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
ICheckAttenceService checkAttenceService=new CheckAttenceService();
String beginDate="2012-12-12 00:00:00";
String endDate="2012-12-12 23:59:59";
JSONArray jsonArray = new JSONArray();
List checkBeanList=checkAttenceService.queryCheckEmps(beginDate, endDate);
for(CheckAttenceBean chBean:checkBeanList){
JSONObject jObect = new JSONObject();
jObect.put("empLng", chBean.getCheckAttLng());// 经纬度
jObect.put("empLat", chBean.getCheckAttLat());// 经纬度
jsonArray.put(jObect);
}
%>




调度查堪人员






在上面的同步加载方式中,使用jquery的ajax同步加载可以实现上面的代码

ICheckAttenceService checkAttenceService=new CheckAttenceService();
String beginDate="2012-12-12 00:00:00";
String endDate="2012-12-12 23:59:59";
JSONArray jsonArray = new JSONArray();
List checkBeanList=checkAttenceService.queryCheckEmps(beginDate, endDate);
for(CheckAttenceBean chBean:checkBeanList){
JSONObject jObect = new JSONObject();
jObect.put("empLng", chBean.getCheckAttLng());// 经纬度
jObect.put("empLat", chBean.getCheckAttLat());// 经纬度
jsonArray.put(jObect);
}

使用jqueyr的ajax方式如下:

function ajaxLoadRequestTask(){
	var addPointsArray="";
	$.ajax({
		type:'post',
		url:'task_getRequestTask.action',
		dataType:'json',
		async:false,//同步加载数据
		cache:false,
		success:function(json){
			addPointsArray=json["sendData"];
			/*for(var i=0;i
如果ajax的同步加载(async:false)不使用,采用默认的加载是异步,即async:true,这样加载出的数据不能赋值给一个js数组变量,使用同步加载方式就可以,是我在网上搜了很久,才找到了问题所在.其实说起ajax的同步与异常加载数据,一看就明白,但用起来不一定真的明白使用场景.

此处让我明白了同步与异步使用的不同场景.


异步加载方式:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>




调度查堪人员




在上面采用异步加载方式时,在FF浏览器下加载N次地图上的标注点都没问题,但在IE6、7、8、Chrome下只有第一次加载标注点的坐标可以,第二次后就不能了,不知为什么,麻烦知道是怎么回事的兄弟给我说下,目前我在项目中采用同步加载方式.

上面红色字体就是解决我异步加载数据时出现的问题.

你可能感兴趣的:(项目经验总结,百度地图,前端开发)