google map api GDirections 计算行程报api错误
我的代码:
  directions = new GDirections(null,myJS.$('directionsDiv')) ;
  GEvent.addListener(directions,'load',dd) ;
  directions.load("从" + fromLatLng + "到" + toLatLng ,{"locale":"zh_CN","travelMode":G_TRAVEL_MODE_WALKING,"avoidHighways":true}) ;function dd(){ 
var distance = directions.getDistance()['meters'] ;
}出现api错误,报a is undefine错误那位高手能提示下是为什么?

解决方案 »

  1.   

    没用过!你的脚本放置的没问题吧!应该是加载的时机不对或者api本身有缺陷
      

  2.   

    脚本放置是没有问题,因为计var distance = directions.getDistance()['meters'] ; 我是可以得到值,但是问题在我在firefox中提示一堆这样的错误,也就是每次load事件后就会引发一个事件。
      

  3.   

    没用过。
    不过貌似google的一些api,如果是引用了外部的script文件,都会有一个callback事件,否则可能没有加载完,才会报错。
    仔细看看api,是不是有一个callback或者onload之类的事件?
    或者把api地址发一下,大家一起讨论讨论
      

  4.   

    directions.load("从" + fromLatLng + "到" + toLatLng ,{"locale":"zh_CN","travelMode":G_TRAVEL_MODE_WALKING,"avoidHighways":true}) ;
    这里是调用api的load
    我也注册了load事件的callback函数,GEvent.addListener(directions,'load',dd) ; 
    google api说明
    api地址:http://code.google.com/intl/zh-CN/apis/maps/documentation/reference.html
      

  5.   

    使用 Google AJAX API 加载程序
    Google 地图 API 现在已与 Google AJAX API 完全集成。此框架使您可以为所有受支持的 Google AJAX API(包括 Google 地图)加载一个 API 密钥,还可以为每个 API 提供一个公共的命名空间,从而允许不同的 Google API 共同运行。请不必担心,如果决定不使用 Google AJAX API 框架,仍可继续使用现有命名空间。
    使用 Google AJAX API 框架相对简单。将应用程序更改为使用该框架包括以下步骤:
    从 http://www.google.cn/jsapi 加载通用加载程序,而不是从 http://ditu.google.cn/apis 加载 API。可以将现有 Google 地图 API 密钥传递到下面的网址:
    <script type="text/javascript" src="http://www.google.cn/jsapi?key=ABCDEFG"></script>
    使用 google.load 方法加载所需的特定 API。google.load 方法以要加载的特定 API 和版本号为参数:
    <script type="text/javascript">
      google.load("maps", "2", {"base_domain": "ditu.google.cn"});
    </script>
    对 Google 地图 API 中当前使用的所有类、方法和属性使用 google.maps.* 命名空间,以使用此命名空间替换 G 前缀。使用 google.setOnLoadCallback() 初始化您的对象。例如,使用 Google AJAX API 加载程序时,GMap2 对象将被映射到 google.maps.Map2:
    <script type="text/javascript" src="http://www.google.cn/jsapi?key=ABCDEFG"></script>
    <script type="text/javascript">
      google.load("maps", "2.x", {base_domain: "ditu.google.cn", language: "zh-CN"});
       
      // Call this function when the page has been loaded
      function initialize() {
        var map = new google.maps.Map2(document.getElementById("map"));
        map.setCenter(new google.maps.LatLng(39.9493, 116.3975), 13);
      }
      google.setOnLoadCallback(initialize);
    </script>看看上面对api的使用的说明里面,你用了吗?
    google.setOnLoadCallback(initialize);这个必须有的,说明加载完成这个api外部js文件
    在initialize这个函数里面初始化你的类。看看他们用的是new google.maps.Map2(document.getElementById("map"));
    或者你的用法改成:directions = new google.maps.GDirections(null,myJS.$('directionsDiv')) ; 
    剩下的自己慢慢试试看?
    祝你好运!
      

  6.   

    我这个加载api是没有问题,没调用一次就这样。不知道什么原因
    a is undefine
    m.mC=function(a){if(a.__jstcache)return a.__jstcache;var b=a.getAttribute("jstcache");if(b)return a.__jstcache=el[b];return il(a)};