[英]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.