他们在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包,但是我想使用dart的js库与javascript api进行交互。
提前致谢。
您的闭包具有零参数。
() {
infowindow.callMethod('open',[map,marker]);
}
您只需要给它一个错误消息中所述的参数即可:
(event) {
infowindow.callMethod('open',[map,marker]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句