判断地图加载完成做一些事(mapabc)

Posted on 2011-08-04 18:27  bingfeng  阅读(3112)  评论(0编辑  收藏  举报

最近遇到一个问题,要在地图加载完后获取地图视野的边界,在边界内加上范围内的点。因为刚开始只使用onload使用总是出现js脚本出错,即mapObj.getLngLatBounds().southWest为空或不是对象,分析原始是在地图还没有加载完成就已经执行到此,肯定不能获取到边界对象。因此要判断地图是否加载完成后再来取值。这样在地图没有加载完之前是不会执行获取边界和加点程序语句。

方法如下:在地图加载的方法mapInit中加上一个地图监听事件。

function  mapInit() {
    var mapoption = new MMapOptions();
    mapoption.toolbar = MConstants.ROUND; //设置地图初始化工具条,ROUND:新版圆工具条
    mapoption.toolbarPos=new MPoint(20,20); //设置工具条在地图上的显示位置
    mapoption.overviewMap = MConstants.SHOW; //设置鹰眼地图的状态,SHOW:显示,HIDE:隐藏(默认)
    mapoption.scale = MConstants.SHOW; //设置地图初始化比例尺状态,SHOW:显示(默认),HIDE:隐藏。
    mapoption.zoom = 15;//要加载的地图的缩放级别
    mapoption.center = new MLngLat(109.944134, 40.580715);//要加载的地图的中心点经纬度坐标
    mapoption.language = MConstants.MAP_CN;//设置地图类型,MAP_CN:中文地图(默认),MAP_EN:英文地图
    mapoption.fullScreenButton = MConstants.SHOW;//设置是否显示全屏按钮,SHOW:显示(默认),HIDE:隐藏
    mapoption.mapComButton  = MConstants.SHOW_NO;
    mapoption.setZoomEnabled=false;
    mapoption.centerCross = MConstants.SHOW;//设置是否在地图上显示中心十字,SHOW:显示(默认),HIDE:隐藏
    mapoption.requestNum=100;//设置地图切片请求并发数。默认100。
    mapObj = new MMap("map", mapoption); //地图初始化
    //注册鼠标拖动地图事件
  mapObj.addEventListener(mapObj,MConstants.DRAG_END,endDrag);
  function endDrag(param){
   MoveMap(param.eventX, param.eventY);
   }
 //注册地图准备完毕后触发事件
  mapObj.addEventListener(mapObj,MConstants.MAP_READY,ready);
  function ready(param){
   LoadData();
  }

}

function LoadData()
{
   ajaxGetPoint();
   chkinput=$("input:[type=checkbox]");
}

$(document).ready(function(){
   mapInit();

});

function ajaxGetPoint()
{
   url="/mapinfo/mapsearch/?s=/Index/getmapPoint";
   var souest = mapObj.getLngLatBounds().southWest;
    var   norEast = mapObj.getLngLatBounds().northEast;
    // alert(souest.lngX+"aaa");
   $.get(url,{lngx1:souest.lngX,laty1:souest.latY,lngx2:norEast.lngX,laty2:norEast.latY},function(data){
   if(data!="")
   {
      var listdata=eval("("+data+")");
    $.each(listdata,function(i,n){
   // alert(n.Code);
    addMarker(n.SName,n.MeterCaliber,n.Address,n.PointLng,n.PointLat,n.Code,n.flag);
    });

    if (tempmarkArr.length>0)
    {
      mapObj.addOverlays(tempmarkArr,false);
    }
    tempmarkArr=new Array();     

  }
   });
}

Copyright © 2024 bingfeng
Powered by .NET 8.0 on Kubernetes