【问题标题】:Call google maps api event addListener using dart:js使用 dart:js 调用 google maps api 事件 addListener
【发布时间】:2014-08-29 16:45:48
【问题描述】:

在 Google Maps API v3 中,他们声明我们需要这样做才能在点击标记时打开信息窗口:

google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
});

现在我正在尝试使用 js 库在 dart 中复制它。到目前为止,我有这样的事情:

final google_maps = context['google']['maps'];

var myLatlng = [43.5, -6.5];
var center = new JsObject(google_maps['LatLng'], myLatlng);

var mapTypeId = google_maps['MapTypeId']['ROADMAP'];

var mapOptions = new JsObject.jsify({
  "center": center,
  "zoom": 8,
  "mapTypeId": mapTypeId
});

var map = new JsObject(google_maps['Map'], [querySelector('#map-canvas'), mapOptions]);

var marker = new JsObject(google_maps['Marker'], [new JsObject.jsify({
  'position': center,
  'map': map,
  'title': 'Hello World!'
})]);

var tooltip = '<div id="content">Info window coontent</div>';

var infowindow = new JsObject(google_maps['InfoWindow'], [new JsObject.jsify({
"content": tooltip
})]);


google_maps['event'].callMethod('addListener', [marker, 'click', () {
  infowindow.callMethod('open',[map,marker]);
}]);

问题是我通过 google_maps['event'] 设置了 'addListener' 方法,但是当我点击标记时,我得到了 NoSuchMethodError:

Closure call with mismatched arguments: function 'call'

NoSuchMethodError: incorrect number of arguments passed to method named 'call'
Receiver: Closure: () => dynamic
Tried calling: call(Instance of 'JsObject')
Found: call()

我知道有一个google_maps dart package,但我希望使用 dart 的 js 库与 javascript api 进行交互。

提前致谢。

【问题讨论】:

  • 为什么不想使用google_maps 包?它在后台使用dart:js,并提供比直接使用dart:js 更易于使用的类型化API。
  • @AlexandreArdhuin,并不是我不想使用它,相反。那是我开始研究飞镖和谷歌地图,当我无法让这个位工作时,我精确地“找到”了那个包。我实际上正在使用它,但我想知道我做错了什么,这就是我问这个的原因,并且评论是为了避免回答告诉我关于包的信息

标签: google-maps google-maps-api-3 dart dart-js-interop


【解决方案1】:

你的闭包有零个参数。

() {
   infowindow.callMethod('open',[map,marker]);
}

您只需按照错误消息中的说明给它一个参数:

(event) {
   infowindow.callMethod('open',[map,marker]);
}

【讨论】:

    猜你喜欢
    • 2023-02-04
    • 2012-08-15
    • 2020-11-04
    • 2011-10-10
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多