c语言接入百度地图api,百度地图API之地图加载方式(同步、异步)

[java]

同步加载方式:

[java]

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);

}

%>

调度查堪人员

var empCount=0;//在勤的理赔人员总数

var tempPoints=new Array();//存放理赔人员的信息

var empPoints=new Array();//存放理赔人员的信息

tempPoints=eval('');

//alert(tempPoints);

for(var i=0,m=tempPoints.length;i

var obj=tempPoints[i];

empPoints[i]=obj.empLng+","+obj.empLat;

//alert(obj.empLng+"---"+obj.empLat);

}

//alert(empPoints.length);

var map=new BMap.Map("createCaseMap");

var point=new BMap.Point(106.540983, 29.560692);//初始化点坐标

map.centerAndZoom(point, 15);   //初始化地图,设置中心点坐标和地图级别

var points =[];//存放标注查堪人员的对象

//alert("start:"+empPoints.length);

for(var i=0,k=empPoints.length;i

var onePoint=empPoints[i];

if(onePoint.indexOf(",")>-1){

var lng=onePoint.split(",")[0];

var lat=onePoint.split(",")[1];

points[i]=new BMap.Point(lng, lat);//动态的把所有的在勤理赔人员经纬度设置在points中

}

}

//自定义覆盖物

var myIcon =new BMap.Icon("/images/map/redflag.png", new BMap.Size(100, 70),{//小车图片

offset: new BMap.Size(0, -5),    //相当于CSS精灵

imageOffset: new BMap.Size(0, 0)    //图片的偏移量。为了使图片底部中心对准坐标点。

});

//alert("addOverlay:"+points.length);

for(var j=0,m=points.length;j

//如果使用map.addOverlay添加大量数据时,会使浏览器变慢

map.addOverlay(new BMap.Marker(points[j],{icon:myIcon}));

}

map.setViewport(points);         //调整地图的最佳视野为显示标注数组point

map.addEventListener('click',function(e){

alert(e.point.lng+","+e.point.lat);

});

异步加载方式:

[java]

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

调度查堪人员

var empCount=0;//在勤的理赔人员总数

var empPoints=new Array();//存放理赔人员的信息

/**

*获取所有的在勤的理赔人员

*/

function getEmployeePostion(){

//alert("getEmployeePostion");

var empPointArray=new Array();

$.ajax({

type:'post',

url:'./checkatt_getCheckAttList.action',

dataType:'json',

success:function(data){

for(var i=0;i

var obj=data[i];

empPointArray[i]=obj.empLng+","+obj.empLat;

//alert(obj.empLng+"---"+obj.empLat);

}

},

error:function(data){

alert('error!');

}

});

return empPointArray;

}

function loadScript(){

empPoints=getEmployeePostion();//初始化所有的在勤人员

//alert("init emp:"+empPoints.length);

var scriptDom=document.createElement("script");

scriptDom.src="http://api.map.baidu.com/api?key=3e280f09aae77af4248eb99129b3badc&v=1.3&services=false&callback=initialize";

document.body.appendChild(scriptDom);

}

/**

*初始百度地图

*/

function initialize(){

var map=new BMap.Map("createCaseMap");

var point=new BMap.Point(106.540983, 29.560692);//初始化点坐标

map.centerAndZoom(point, 15);   //初始化地图,设置中心点坐标和地图级别

empCount=empPoints.length;//设置所有 的理赔人员

var points =[];//存放标注查堪人员的对象

//alert(empCount);

for(var i=0,k=empPoints.length;i

var onePoint=empPoints[i];

//alert("for-->"+onePoint);

if(onePoint.indexOf(",")>-1){

var lng=onePoint.split(",")[0];

var lat=onePoint.split(",")[1];

points[i]=new BMap.Point(lng, lat);//动态的把所有的在勤理赔人员经纬度设置在points中

}

}

//自定义覆盖物

var myIcon =new BMap.Icon("/images/map/redflag.png", new BMap.Size(100, 70),{//小车图片

offset: new BMap.Size(0, -5),    //相当于CSS精灵

imageOffset: new BMap.Size(0, 0)    //图片的偏移量。为了使图片底部中心对准坐标点。

});

for(var m=0;m

//如果使用map.addOverlay添加大量数据时,会使浏览器变慢

map.addOverlay(new BMap.Marker(points[m],{icon:myIcon}));

}

map.setViewport(points);         //调整地图的最佳视野为显示标注数组point

map.addEventListener('click',function(e){

//1、TODO 处理经纬度相同的人员在地图上的显示问题

//不能通过经纬度来查询出员工的个人信息、任务量

alert(e.point.lng+","+e.point.lat);

});

//alert("map初始化完成");

}

window.οnlοad=loadScript;

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

http://www.dengb.com/Javabc/527545.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/527545.htmlTechArticle[java] 同步加载方式: [java] %@page import=com.util.json.JSONArray% %@page import=com.util.json.JSONObject% %@page import=com.bean.CheckAttenceBean% %@page import=java.util.Lis...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值