One way of doing this is as follows:
1. Add an interface with an execute method that accepts one argument
Code:
package com.maharana.gwtextmaps.client;
public interface OneArgFunction {
public void execute(com.google.gwt.core.client.JavaScriptObject arg);
}
2. Override methods in MapPanel.java
Code:
mapPanel = new GoogleMap() {
public void addEventListener(final String event, final OneArgFunction listener) {
if (!this.isRendered()) {
addListener(MAP_RENDERED_EVENT, new Function() {
public void execute() {
doAddEventListener(event, listener);
}
});
} else {
doAddEventListener(event, listener);
}
}
private native void doAddEventListener(String event, OneArgFunction listener) /*-{
var map = this.@com.gwtext.client.widgets.map.MapPanel::mapJS;
map.addEventListener(event, function(llp) {
listener.@com.maharana.gwtextmaps.client.OneArgFunction::execute(Lcom/google/gwt/core/client/JavaScriptObject;)(llp);
});
}-*/;
// constructor - attach event listener
{
addEventListener("click", new OneArgFunction(){
public void execute(JavaScriptObject arg) {
LatLonPoint llp = new LatLonPoint(arg);
mapPanel.setCenterAndZoom(llp, mapPanel.getZoom());
mapPanel.addMarker(new Marker(llp));
MessageBox.alert("Clicked Location", "Lat: " + llp.getLat() + "<br>Lon: " + llp.getLon());
}
});
}
};
I have posted a blog entry on this at:
http://abhijeetmaharana.com/blog/2008/0 ... dle-click/Do let me know if you have suggestions / corrections. A simpler method should be there somewhere!