繁体   English   中英

Javascript“回调”功能不起作用

[英]Javascript 'callback' function not working

我使用Google Map API v3绘制路线。 但是对于某些路径,该路径未在地图上绘制。 所以我写了一个回调函数。 但是它不起作用,我的代码是

function putRoute(request,color,callback)
{
  var color   = color;
  var request = request;

  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var polylineOptionsActual = {
        strokeColor  :color,
        strokeOpacity: 1.0,
        strokeWeight : 5,
      };

      var directionsRenderer = new google.maps.DirectionsRenderer;
      directionsRenderer.setMap(map);
      directionsRenderer.setOptions( { polylineOptions: polylineOptionsActual, suppressMarkers: true} );
      directionsRenderer.setDirections(response);
    }
  });

  if (typeof callback === "function") {
    callback(request,color);
  }
}

putRoute(request,color,function() {

});

尝试将功能putRoute重命名为

function putRoute(request,color){}

我猜这种情况不正确:

  if (typeof callback === "function") {

我将其更改为

  if (typeof callback != "undefined") {

Atleast,我确实知道这最后一个代码正在运行。

您也可以尝试以下一种方法:

if (callback instanceof Function) {
// do stuff;
}

您的回调例程在错误的位置。 它必须位于DirectionsService的回调函数中:

function putRoute(request,color,callback)
{
  var color   = color;
  var request = request;

  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var polylineOptionsActual = {
        strokeColor  :color,
        strokeOpacity: 1.0,
        strokeWeight : 5,
      };

      var directionsRenderer = new google.maps.DirectionsRenderer;
      directionsRenderer.setMap(map);
      directionsRenderer.setOptions( { polylineOptions: polylineOptionsActual, suppressMarkers: true} );
      directionsRenderer.setDirections(response);
      // only execute callback on success   
      if (typeof callback === "function") {
        callback(request,color);
      }
    } else { 
      alert("Directions request failed:" + status); 
    }
  });

}

在将回调定义为时,我遇到了同样的问题:

function callback() {
...
}

然后我将其更改为:

callback = function() {
...
}

一切正常! 希望能帮助到你 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM