2014-08-29 4 views
0

В API v3 Google Maps они заявляли, что нам нужно сделать, это открыть InfoWindow, когда маркер получает щелкнул:вызовов API Карт Google событие добавления слушателя с помощью дротика: Js

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

Теперь я пытаясь дублировать это в дротике, используя библиотеку js. До сих пор у меня есть что-то вроде этого:

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]); 
}]); 

Вопрос заключается в том, что я установил метод «AddListener» через GOOGLE_MAPS [ «событие»], но когда я нажимаю на маркер, я получаю 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, но я хочу, чтобы взаимодействие с javascript api использовалось js-библиотекой dart.

Заранее спасибо.

+0

Почему вы не хотите использовать 'google_maps' пакет? Он использует 'dart: js' под обложкой и предоставляет типизированный API гораздо проще в использовании, чем непосредственно с помощью' dart: js'. –

+0

@AlexandreArdhuin, не то, что я не хочу использовать его, наоборот. Это то, что я начал заглядывать в карты дротиков и google, и когда я не мог сделать эту работу, я точно «нашел» этот пакет. Я использую его на самом деле, но я хотел знать, что я делаю неправильно, и поэтому я спросил об этом, и комментарий был для того, чтобы избежать ответов, рассказывающих мне о пакете – mitomed

ответ

6

Ваше закрытие имеет нулевые аргументы.

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

Вы просто должны дать ему аргумент, как указано в сообщении об ошибке:

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