I found the problem. But I don't really understand why?

 map.addMapClickHandler(new MapClickHandler() {
            public void onClick(MapClickEvent e) {
              MapWidget sender = e.getSender();
              Overlay overlay = e.getOverlay();
              LatLng point = e.getLatLng();

===> HERE IS THE PROBLEM <===
              newMarker = new Marker(point);

              if (overlay != null && overlay instanceof Marker) {
                sender.removeOverlay(overlay);

              } else {
                sender.addOverlay(newMarker);
                info.open(newMarker, infoWindowContent);

              }
            }
          });

By removing newMarker = new Marker(point); and inserting it here:

map.addMapClickHandler(new MapClickHandler() {
            public void onClick(MapClickEvent e) {
              MapWidget sender = e.getSender();
              Overlay overlay = e.getOverlay();
              LatLng point = e.getLatLng();



              if (overlay != null && overlay instanceof Marker) {
                sender.removeOverlay(overlay);

              } else {
===> HERE IS THE PROBLEM SOLVED <===
              newMarker = new Marker(point);
                sender.addOverlay(newMarker);
                info.open(newMarker, infoWindowContent);

              }
            }
          });

The exception isn't thrown and clicking on the marker works. Why does
javascript throw an exception?

On Dec 17, 3:57 pm, pfdevil <devilliers...@gmail.com> wrote:
> Hello
>
> I have an issue with an marker that does not want to close when
> clicked. Basically adding a marker is fine, but when I click on the
> marker it is supposed to close but it doesn't. I copied the code from
> this tutorial.
>
> http://gwt.google.com/samples/HelloMaps-1.0.1/HelloMaps.html#Click%20...
>
> Here is my code:
>
> public class SimpleMaps implements EntryPoint{
>         private InfoWindow info = null;
>         private Marker newMarker = null;
>         InfoWindowContent infoWindowContent = null;
>
>         /**
>          * This is the entry point method.
>          */
> public void onModuleLoad() {
>         LatLng cawkrCity = LatLng.newInstance(39.509, -98.434);
>         VerticalPanel verticalPanel = new VerticalPanel();
>
>         verticalPanel.addStyleName("verticalPanel");
>
>         MapWidget map = new MapWidget(cawkrCity, 4);
>
>         HTML htmlWidget = new HTML("<b> Write a message </b>");
>
>         verticalPanel.add(htmlWidget);
>
>         info = map.getInfoWindow();
>
>         infoWindowContent = new InfoWindowContent(verticalPanel);
>
>         map.setUIToDefault();
>
>         map.addStyleName("mapContainer");
>
>         map.setSize("500px", "300px");
>
>        # THIS IS THE CLICKHANDLER FOR THE MARKER
>
>         map.addMapClickHandler(new MapClickHandler() {
>             public void onClick(MapClickEvent e) {
>               MapWidget sender = e.getSender();
>               Overlay overlay = e.getOverlay();
>               LatLng point = e.getLatLng();
>
>               newMarker = new Marker(point);
>
>               if (overlay != null && overlay instanceof Marker) {
>                 sender.removeOverlay(overlay);
>
>               } else {
>                 sender.addOverlay(newMarker);
>                 info.open(newMarker, infoWindowContent);
>
>               }
>             }
>           });
>
>         RootPanel.get("mapContainer").add(map);
>
>         }
>
> I also receive an error when testing this application:
>
> 14:37:18.834 [ERROR] [simplemaps] Uncaught exception escaped
> com.google.gwt.core.client.JavaScriptException: (TypeError): a is null
>  fileName:http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/maps2.api/main.js
>  lineNumber: 1246
>  stack: (null)@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/
> maps2.api/main.js:1246
> ik(null)@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/maps2.api/
> main.js:1237
> (null)@http://localhost:8888:85
> @:0
> ([object GWTJavaObject],2555922,[object GWTJavaObject],null)@http://
> localhost:8888/simplemaps/hosted.html?simplemaps:56
> ([object Object],(void 0),[object Object])@http://localhost:8888:160
> ([object Array])@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/
> maps2.api/main.js:297
> ([object Object],1)@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/
> maps2.api/main.js:274
> t([object Array],(function (d) {if (lh) {d.bt(c);} else {try {d.bt
> (c);} catch (f) {}}}))@http://maps.gstatic.com/intl/en_ALL/mapfiles/
> 193c/maps2.api/main.js:81
> A([object Object],"click",[object Object],(void 0),[object Object])
> @http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/maps2.api/main.js:
> 274
> ([object Object])@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/
> maps2.api/main.js:770
> ([object Object])@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/
> maps2.api/main.js:6
> ([object Array])@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/
> maps2.api/main.js:297
> ([object Object],0)@http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/
> maps2.api/main.js:274
> t([object Array],(function (d) {if (lh) {d.bt(c);} else {try {d.bt
> (c);} catch (f) {}}}))@http://maps.gstatic.com/intl/en_ALL/mapfiles/
> 193c/maps2.api/main.js:81
> A([object Object],"click",[object Object])@http://maps.gstatic.com/
> intl/en_ALL/mapfiles/193c/maps2.api/main.js:274
> Em([object MouseEvent])@http://maps.gstatic.com/intl/en_ALL/mapfiles/
> 193c/maps2.api/main.js:1298
>     at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript
> (BrowserChannelServer.java:195)
>     at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke
> (ModuleSpaceOOPHM.java:120)
>     at com.google.gwt.dev.shell.ModuleSpace.invokeNative
> (ModuleSpace.java:507)
>     at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject
> (ModuleSpace.java:264)
>     at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject
> (JavaScriptHost.java:91)
>     at com.google.gwt.maps.client.impl.__MarkerImplImpl.construct
> (__MarkerImplImpl.java)
>     at com.google.gwt.maps.client.overlay.Marker.<init>(Marker.java:
> 116)
>     at simplemap.client.SimpleMaps$2.onClick(SimpleMaps.java:66)
>     at com.google.gwt.maps.client.MapWidget$8.callback(MapWidget.java:
> 481)
>     at com.google.gwt.maps.client.impl.EventImpl$OverlayLatLngCallback
> $1.execute(EventImpl.java:193)
>     at
> com.google.gwt.maps.client.impl.EventImpl.invokeAndReportUncaughtExceptions
> (EventImpl.java:260)
>     at
> com.google.gwt.maps.client.impl.EventImpl.invokeAndMaybeReportUncaughtExceptions
> (EventImpl.java:246)
>     at com.google.gwt.maps.client.impl.EventImpl.access$0
> (EventImpl.java:241)
>     at com.google.gwt.maps.client.impl.EventImpl
> $OverlayLatLngCallback.callbackWrapper(EventImpl.java:191)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:57)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at com.google.gwt.dev.shell.MethodAdaptor.invoke
> (MethodAdaptor.java:103)
>     at com.google.gwt.dev.shell.MethodDispatch.invoke
> (MethodDispatch.java:71)
>     at com.google.gwt.dev.shell.OophmSessionHandler.invoke
> (OophmSessionHandler.java:157)
>     at com.google.gwt.dev.shell.BrowserChannel.reactToMessages
> (BrowserChannel.java:1668)
>     at com.google.gwt.dev.shell.BrowserChannelServer.processConnection
> (BrowserChannelServer.java:401)
>     at com.google.gwt.dev.shell.BrowserChannelServer.run
> (BrowserChannelServer.java:222)
>     at java.lang.Thread.run(Thread.java:636)
>
> This could maybe be related. I'm sorry for posting all this code.
> Since it usually unnecessary. But i'm not sure what to do, or where
> this error/exception lies.
>
> Thank you

--

You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.


Reply via email to