加载map时出错:未捕获TypeError:undefined不是函数

时间:2014-04-23 06:39:19

标签: javascript jquery google-maps-api-3

我正在尝试使用Google Maps API。我在其中使用Google DirectionsService在地图上绘制路线。

我已经存储了很少的DirectionResults对象。我想加载到地图上。
以下是我写的代码;

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>

加载存储的json(DirectionsResult对象格式)

$.getJSON('GoogleJson.json', function (json) {
    debugger;
    data = json;
});

调用DirectionsService.Route()方法;

directionsService.route(request, function (response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(data);
        console.log(data);
        console.log(response);
    }
});

这是一个错误。如果我们在setDirections()中使用响应对象,则会使用路径呈现地图。但是,如果我使用getJSON()方法从文件加载它,则会出现上述错误。

在上面的代码中,如果我们查看数据和响应对象,两者都是相同的。

编辑:
我添加了支票

if (data != response) {
    console.log(typeof data);
    console.log(typeof response);
}

if (data == response)
    alert('both objects are same'); 

对象似乎不一样。 typeof语句表示两者都是对象类型。

1 个答案:

答案 0 :(得分:0)

假设您的数据包含routes所期望的directionsDisplay.setDirections(我不这么认为):在directionsResult中还有另一个未记录的属性是必需的(返回原始要求)。此函数的名称是动态的,因此可能:

  1. 不存储在JSON中(因为它是一个功能)
  2. 无法以任何方式安全恢复(因为您不知道该功能的预期名称)
  3. 结论:存储的directionsResult可能无法创建方向(至少在会话中不安全)

    我能想到的唯一解决方法是存储原始请求,发送虚拟请求以检索函数所需的名称,然后使用此名称恢复该函数。