﻿function NMTDMap(name)
{
    this.Name = name;
    this.centerX = 111.68390035629272;
    this.centerY = 40.82520871137056;
    this.mapObjID = "mapObj";
    this.Zoom = 13;
    this.ToolsLeft = 20;
    this.ToolsTop = 25;
    this.IsMark = false;
    this.IsShow = true;
    this.Dian = true;
    
    this.Title = "测试";
    this.Content = "测试";
    
    var mapObj=null;   
    var Mmarker;
    var startX = null;   
    var startY = null;   
    var endX = null;   
    var endY = null;
    var markerOptions;   
    var pointsearch;   
    var pointsearch1;
    var route_segment=new Array();
    
    this.mapInit = function()
    {   
      var mapoption = new MMapOptions();   
      mapoption.zoom = this.Zoom;
      mapoption.center = new MLngLat(this.centerX, this.centerY);  

      if(this.IsShow)
      {
          mapoption.toolbar = ROUND;
          mapoption.toolbarPos = new MPoint(this.ToolsLeft, this.ToolsTop);
          mapoption.overviewMap = SHOW;
      }
      else
      {
          mapoption.scale = null;
          mapoption.overviewMap = HIDE;
          mapoption.fullScreenButton = HIDE;
          mapoption.centerCross = HIDE;
      }
      
      mapObj = new MMap(this.mapObjID, mapoption);
      if(this.IsMark)
        mapObj.addEventListener(mapObj,MOUSE_CLICK,this.MclickMouse);
    }
    
    this.getCenter = function(ById)
    {   
      var center=mapObj.getCenter();   
      centerX=center.lngX;   
      centerY=center.latY;
      try
      {this.$(ById).innerHTML = centerX + "," + centerY;}
      catch(e)
      {alert(centerX + "," + centerY);}
    }
    
    this.addMarker = function(title,content,label)
    {
      var tipOption = new MTipOptions();
      tipOption.title = title;      
      tipOption.content = content;     
      tipOption.tipType=IMG_BUBBLE_TIP;
      var markerOption = new MMarkerOptions();     
      var labelOption = new MLabelOptions();
      labelOption.content = label; 
      markerOption.labelOption = labelOption;
      markerOption.imageUrl = "http://code.mapabc.com/images/lan_1.png";
      markerOption.imageAlign = MIDDLE_CENTER;
      markerOption.tipOption = tipOption;      
      markerOption.canShowTip = this.Dian;
      markerOption.isDimorphic =true;
      markerOption.dimorphicColor = 0x046788;
      Mmarker = new MMarker(mapObj.getCenter(),markerOption);
      Mmarker.id = "mark101";      
      mapObj.addOverlay(Mmarker,true);
    }
    
    this.addMarkerAll = function(title,content,label,X,Y,id)
    {
      var tipOption = new MTipOptions();
      tipOption.title = title;      
      tipOption.content = content;     
      tipOption.tipType=IMG_BUBBLE_TIP;
      var markerOption = new MMarkerOptions();     
      var labelOption = new MLabelOptions();
      labelOption.content = label; 
      markerOption.labelOption = labelOption;
      markerOption.imageUrl = "http://code.mapabc.com/images/lan_1.png";
      markerOption.imageAlign = MIDDLE_CENTER;
      markerOption.tipOption = tipOption;      
      markerOption.canShowTip = this.Dian;
      markerOption.isDimorphic =true;
      markerOption.dimorphicColor = 0x046788;
      Mmarker = new MMarker(new MLngLat(X, Y),markerOption);
      Mmarker.id = "mark" + id;      
      mapObj.addOverlay(Mmarker,true);
    }
    
    this.rulerByMouseTool = function()
    {   
      var option={};   
      option.hasCircle=false;   
      option.hasPrompt=true;   
      var test=mapObj.setCurrentMouseTool(RULER,option);   
    }
    
    this.panToCenter = function(lng,lat){mapObj.panTo(new MLngLat(lng, lat));}
    this.zoomInByMouseTool = function(){var test=mapObj.setCurrentMouseTool(FRAME_ZOOMIN);}
    this.zoomOutByMouseTool = function(){var test=mapObj.setCurrentMouseTool(FRAME_ZOOMOUT);}   
    this.computeAreaByMouseTool = function(){var test=mapObj.setCurrentMouseTool(COMPUTE_AREA);}
    this.moveMapByMouseTool = function(){var test=mapObj.setCurrentMouseTool(PAN_WHEELZOOM);}
    this.removeOverlays = function(){mapObj.removeAllOverlays();}
    this.$ = function(id){return document.getElementById(id);}
    
    this.MclickMouse = function(param)
    {
      var tipOption = new MTipOptions();
      tipOption.title = "新标记";      
      tipOption.content = "新标记";     
      var markerOption = new MMarkerOptions();     
      var labelOption = new MLabelOptions();
      labelOption.content = "新标记"; 
      markerOption.labelOption = labelOption;
      markerOption.imageUrl = "http://code.mapabc.com/images/lan_1.png";
      markerOption.imageAlign = MIDDLE_CENTER;
      markerOption.tipOption = tipOption;      
      markerOption.canShowTip = true;       
      markerOption.isDimorphic =true;
      markerOption.dimorphicColor = 0x046788;
      Mmarker = new MMarker(new MLngLat(param.eventX, param.eventY),markerOption);
      parent.document.getElementById("MLngLat").value = param.eventX +","+ param.eventY;
      Mmarker.id = "mark101";   
      mapObj.addOverlay(Mmarker,false);
      
    }
    
    this.searchBykeywords = function(keyword,citycode) 
    {
        var mls =new MLocalSearch();
        var mlsp= new MLocalSearchOptions();
        mls.setCallbackFunction(this.myfunc);
        mls.poiSearchByKeywords(keyword,citycode,mlsp);
    }
    
    this.searchBykeywordsCenter = function(keyword,centerkeyword,citycode)
    {
        var mls = new MLocalSearch();
        var mlsp= new MLocalSearchOptions();
        mls.setCallbackFunction(this.myfunc);
        mls.poiSearchByCenterKeywords(centerkeyword,keyword,citycode,mlsp);
    }   

    this.myfunc = function(data)
    {
        var overarr= new Array();   
        var pointid;   
        var temp="";   
        for (var i = 0; i < data.poilist.length; i++)
        {   
         var x = data.poilist[i].x;   
         var y = data.poilist[i].y;   
         markerOptions = new MMarkerOptions();   
         markerOptions.isDraggable=false;//是否可以拖动   
         markerOptions.canShowTip= true;   
         markerOptions.imageUrl ="http://code.mapabc.com/images/apin/lan_"+(i+1)+".png";
         
         var type = data.poilist[i].type;
         var address = data.poilist[i].address;
         var tel = data.poilist[i].tel;
         var sContent = "";
         if (type == "" || type == "undefined" || type == null){type = "暂无";}   
         if (address == "" || address == "undefined" || address == null){address = "暂无";}   
         if (tel == "" || tel == "undefined" || tel == null){tel = "暂无";}   
         if (!type == "" && type != null){sContent += "<br><font color='#000000'>类型:"+type+"</font><br/>";}   
         if (!address == "" && address != null){sContent += "<font color='#000000'>地址:"+address+"</font><br/>"; }   
         if (!tel == "" && tel != null){sContent += "<font color='#000000'>电话:"+tel+"</font><br/>"; }

         var tipOption = new MTipOptions();   
         tipOption.title=i+1+data.poilist[i].name;   
         tipOption.content=sContent;
         var mfillstyle=new MFillStyle();
         mfillstyle.color=0x005cb5;   
         mfillstyle.alpha = 1;   
         tipOption.titleFillStyle = mfillstyle;   
         var linestyle = new MLineStyle();   
         linestyle.thickness = 3;   
         linestyle.color = 0x000000;   
         linestyle.alpha = 1;   
         tipOption.borderStyle = linestyle;   
         markerOptions.tipOption = tipOption;   
         markerOptions.labelStyle.color = 0xffffff;   
         var ll=new MLngLat(x,y);   
         pointsearch =  new MMarker(ll,markerOptions);   
         pointsearch.id=(i+1);   
         overarr.push(pointsearch);   
        }
       mapObj.addOverlays(overarr,true);
    }
    
    this.getStartXY = function()
    {
      var citycode = this.$("StartCity").value;
      var startName = this.$("StartName").value
      var mls =new MLocalSearch();   
      var mlsp= new MLocalSearchOptions();   
      mlsp.recordsPerPage=1;   
      mls.setCallbackFunction(this.Startmyfunc);   
      mls.poiSearchByKeywords(startName,citycode,mlsp);   
    }   

    this.Startmyfunc = function(data)
    {   
      if(data.error_message != undefined )
      {   
       alert(data.error_message);   
      }
      else
      {   
        for (var i = 0; i < data.poilist.length; i++)
        {   
          startX = data.poilist[i].x;   
          startY = data.poilist[i].y;   
          markerOptions = new MMarkerOptions();   
          markerOptions.isDraggable=false;//是否可以拖动     
          markerOptions.canShowTip= true;   
          markerOptions.imageUrl ="http://code.mapabc.com/images/qd.png";   
          var ll=new MLngLat(startX,startY);   
          pointsearch =  new MMarker(ll,markerOptions);   
          pointsearch.id="start";   
          mapObj.addOverlay(pointsearch,true);   
          }   
        NMTD.getEndXY();
      }        
    }
    
    this.getEndXY = function()
    {   
      var citycode = this.$("EndCity").value;
      var endName = this.$("EndName").value
      var mls =new MLocalSearch();   
      var mlsp= new MLocalSearchOptions();   
      mlsp.recordsPerPage=1;   
      mls.setCallbackFunction(this.Endmyfunc1);   
      mls.poiSearchByKeywords(endName,citycode,mlsp);   
    }   
     
    this.Endmyfunc1 = function(data)
    {   
      if(data.error_message != undefined )
      {   
       alert(data.error_message);   
      }
      else
      {   
        for (var i = 0; i < data.poilist.length; i++)
        {   
         endX = data.poilist[i].x;   
         endY = data.poilist[i].y;   
         var ll=new MLngLat(endX,endY);   
         var  markerOptions1=new MMarkerOptions();   
         markerOptions1.imageUrl ="http://code.mapabc.com/images/zd.png";   
         pointsearch1 =  new MMarker(ll,markerOptions1);   
         pointsearch1.id="end";   
         mapObj.addOverlay(pointsearch1,true);   
         }   
      }    
      NMTD.routSearchByStartXYAndEndXY();
    }    

    this.routSearchByStartXYAndEndXY = function()
    {
      var citycode = this.$("StartCity").value;   
      var mrs =new MRoutSearch();   
      var rsoption = new MRoutSearchOptions();   
        mrs.setCallbackFunction(this.Rootmyfunc);    
        mrs.routSearchByStartXYAndEndXY("drive",new MLngLat(startX,startY),new MLngLat(endX,endY),citycode,rsoption);   
    }   
    
    this.Rootmyfunc = function(data)
    {
      var rs = data;   
      var coors=rs.bounds;   
      coors=coors.split(';');    
      for(var i=0;i<rs.segmengList.length;i++)
      {   
       route_segment[i] =rs.segmengList[i].coor;   
       var dtextInfo=rs.segmengList[i].textInfo;   
       var daction=rs.segmengList[i].action;   
       var droadName=rs.segmengList[i].roadName;   
       var ddirection=rs.segmengList[i].direction;   
       var ddriveTime=rs.segmengList[i].driveTime;   
       var dgrade=rs.segmengList[i].grade;     
       var daccessorialInfo=rs.segmengList[i].accessorialInfo;   
       var droadLength=rs.segmengList[i].roadLength;   
       NMTD.drawline2(rs.coors,startX,startY);
      }   
    }   
    
    this.drawline2 = function(coors,startX,startY)
    {
      var arrline = new Array();   
      var linexy =coors.split(',');   
      var line_l = (linexy.length-1)/2;   
      for(var i=0;i<line_l;i++)
      {   
       arrline.push(new MLngLat(linexy[2*i],linexy[2*i+1]));   
      }   
      var lineS=new MLineStyle();   
      lineS.thickness = 3;   
      lineS.color = 0xff230b;   
      lineS.alpha = 1;   
      var lineoption  = new MLineOptions();   
      lineoption.lineStyle = lineS;   
      var line = new MPolyline(arrline,lineoption);   
      mapObj.addOverlay(line,true);   
      
      var lnglat = new MLngLat( startX, startY);   
      var markerOption = new MMarkerOptions();   
      markerOption.imageUrl ="http://code.mapabc.com/images/car_03.png"; 
      var Mmarker1 = new MMarker(lnglat,markerOption);   
      Mmarker1.id="bus1";   
      mapObj.addOverlay(Mmarker1);   
      mapObj.markerMoveAlong("bus1",arrline,3);   
      mapObj.startMoveAlong('bus1',true);
    }
}
