function showabc()
{  
  $.get("json/abcd.ashx?type=get&d ="+new Date(),function(d){
        var data=eval('('+d+')').list;
        for(var i=0,l=data.length;i<l;i++)
        {
            var opts={ lat:data[i].lat,
              lon:data[i].lon,
              title:data[i].title, 
              id:data[i].id,
              userid:data[i].userid 
            }
            
            var x = opts.lon;
            var y = opts.lat;
            var ggPoint = new BMap.Point(x,y);
            BMap.Convertor.translate(ggPoint,2,translateCallback);
        }
    })
}
            
translateCallback = function (point){
var myIcon = new BMap.Icon( "images/biaozhu.jpg",new BMap.Size(14, 24),
            {
                anchor : new BMap.Size(13, 13) 
            });
     var er = new BMap.Marker(new BMap.Point(point.lng,point.lat), {icon:myIcon});
     utexttName =new  BMap.Label("标注:"+title,{offset:  new BMap.Size(14, 3) });  
     utexttName.setStyle({borderColor:"#ADAEAC",color:"#993300",backgroundColor:"#FFFFD7"});
     er.setLabel(utexttName); 
     map.addOverlay(er);
}我现在想让 红色的这个title能得到上面那个方法的title值 该如何呢?

解决方案 »

  1.   

    BMap.Convertor.translate(ggPoint,2,translateCallback(opts.title));通过它传。。
    utexttName =new BMap.Label("标注:"+point,{offset: new BMap.Size(14, 3) });  试试
      

  2.   

    应该得还定义个var z = opts.title;吧
      

  3.   

    谢谢,我试了一下 确实这样可以把title传过去,但是 我也必须把 ggpoint这个传过去,于是我写成BMap.Convertor.translate(ggPoint,2,translateCallback(ggpoint,opts.title));
    这样 我发现 原本 我写的BMap.Convertor.translate(ggPoint,2,translateCallback)这样传,ggpoint值是会变的 我要的就是会变的,但是如果BMap.Convertor.translate(ggPoint,2,translateCallback(ggpoint,opts.title));
    这样虽然 ggpoint传过去了 但是 值不会变
      

  4.   

    for(var i=0,l=data.length;i<l;i++)
      {
      var opts={ lat:data[i].lat,
      lon:data[i].lon,
      title:data[i].title,  
      id:data[i].id,
      userid:data[i].userid  
      }
        
      var x = opts.lon;
      var y = opts.lat;
      var ggPoint = new BMap.Point(x,y);
      BMap.Convertor.translate(ggPoint,2,translateCallback);
      }BMap.Convertor.translate()这是什么方法?而且你写在一个循环里。。循环每执行一次就会传一次ggPoint过去。。除非ggPoint这个值是固定的。。你可以跟踪下
      

  5.   

    这个是 百度给的函数,作用是把谷歌的经纬度变成百度的经纬度,我现在BMap.Convertor.translate(ggPoint,2,translateCallback);这么写  ggpoint穿进去后,函数会自己处理然后变成百度的经纬度
    ,ggpoint不会是固定的,我断点过 发现执行到BMap.Convertor.translate(ggPoint,2,translateCallback);并不会跳进这个方法,而是等第一个方法都结束了后,才会进
    translateCallback,然后我看调试发现,translateCallback保存了前面循环的所有point并且已经转换好,我现在就是无法做到把title也传过去,一旦传过去了,point仍旧是谷歌的了,不会变成百度的
      

  6.   

    在BMap.Convertor.translate(ggPoint,2,translateCallback);这句的前面定义一个变量
    比如var title=opts.title;就可以了
      

  7.   

    定义了就可以直接用了  title的作用域也在translateCallback 这个里
      

  8.   

    小弟不解,这是两个方法  titlte在第一个方法里定义  怎么在第二个translateCallback 里用呢,又不是全局变量
      

  9.   

    BMap.Convertor.translate(ggPoint,2,new TranslateCallback(title).translateCallbackNomalMarker);
     function TranslateCallback(title)
        {
          this.translateCallbackNomalMarker =  function (point)
          {
             translateCallbackNomalMarker(title,point);
          }
        }
    function translateCallbackNomalMarker(, point)
    {
          //回调实现
    }
      

  10.   

    下面方式,测试可用的:BMap.Convertor.translate(ggPoint,2,new TranslateCallback(title).translateCallbackNomalMarker);
     function TranslateCallback(title)
        {
          this.translateCallbackNomalMarker =  function (point)
          {
             translateCallbackNomalMarker(title,point);
          }
        }
    function translateCallbackNomalMarker(title, point)
    {
          //回调实现
    }