繁体   English   中英

谷歌在类内部映射javascriptdirectionsService.route请求:将类实例传递给回调函数

[英]google maps javascript directionsService.route request inside class: pass the class instance to the callback function

谷歌地图方向服务路线请求具有以下原型:

route(request:DirectionsRequest, callback:function(DirectionsResult, DirectionsStatus))

我在一个类实例方法中调用服务请求,该方法看起来像这样:

myClass.protype.routeStuff(){
    directionsService.route(request, function(response, status){
         '''handle the response here'''
        });
};

我需要在'''在此处处理响应'''中访问myClass实例。 我不是JS专家。 我该如何传递?

更一般而言,给定路由原型,如何将其他参数传递给回调函数?

更新1:我最终使用乍得的答案创建了这样调用的类回调方法:

directionsService.route(request, this.extendRouteToLocationCallback.bind(this));

通过这样强制关闭回调函数,我能够独立地解决此问题:

var extrastuff = this;
directionsService.route(request, function (response, status) {
    routeCallback(extrastuff, response, status);});

我相信也可以这样做:

directionsService.route(request, function (response, status) {
    routeCallback(response, status);}.bind(this));

出于我的直接目的,乍得的方法产生了更好的结构化代码。

更新2:我采用的最终解决方案与此相关,并传递了如下额外的参数:

var request = buildMapRequest(currentEndLocation, null, location);
directionsService.route(request, this.extendRouteToLocationCallback.bind(this, location));

回调看起来像这样:

Route.prototype.extendRouteToLocationCallback = function(location, response, status){...}

使用函数绑定

function directionsServiceCallback(response, status){
   // this keyword is now a reference to a myClass instance due to
   // function binding.
});

myClass.protype.routeStuff(){
  directionsService.route(request, directionsServiceCallback.bind(this));
};

暂无
暂无

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

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