# GWT OSM



## gwtosm (6. Dez 2012)

Tagchen.

Ich habe ein GWT OMS Tutorial ausprobiert und wie das immer so ist
mit Tutorials funktionieren sie nicht wirklich.

Es wird immer folgende Exception geschmissen, mit der ich und Google
0 Komma nichts anfangen kann:


```
java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396) at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363) at java.lang.Thread.run(Unknown Source) Caused by: com.google.gwt.core.client.JavaScriptException: (TypeError): $wnd.OpenLayers is undefined at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:248) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at org.gwtopenmaps.openlayers.client.layer.OSMImpl.Osmarender(OSMImpl.java) at org.gwtopenmaps.openlayers.client.layer.OSM.Osmarender(OSM.java:38) at myPackage.client.View.initMap(View.java:33) at myPackage.client.View.onModuleLoad(View.java:26) ... 9 more
```

Der Code dazu ist recht Simple:


```
public class View implements EntryPoint {

	public View() {
		
	}

	public void onModuleLoad() {
		initMap();
	}
	
	private void initMap() {
		MapOptions defaultMapOptions = new MapOptions();
		MapWidget mapWidget = new MapWidget("684px", "330px", defaultMapOptions);
		
		OSM osm_1 = OSM.Osmarender("Osmarender");
		OSM osm_2 = OSM.Mapnik("Mapnik");
		OSM osm_3 = OSM.CycleMap("CycleMap"); 
		OSM osm_4 = OSM.Maplint("Maplint"); 
		
		osm_1.setIsBaseLayer(true);
		osm_2.setIsBaseLayer(true);
		osm_3.setIsBaseLayer(true);
		osm_4.setIsBaseLayer(true);
		
		Map map = mapWidget.getMap();
	    map.addLayer(osm_1);
	    map.addLayer(osm_2);
	    map.addLayer(osm_3);
	    map.addLayer(osm_4);
	    map.addControl(new LayerSwitcher());
	    map.addControl(new MousePosition());
		
	    LonLat lonLat = new LonLat(6.95, 50.94);          
        lonLat.transform("EPSG:4326", "EPSG:900913"); 
          
        map.setCenter(lonLat, 12);                      

 		RootPanel.get().add(mapWidget);
	}
}
```

Abhängigkeiten sind natürlich GWT und die gwt-openlayers-client-0.6.jar

Hat da jemand Ahnung von? Weiß nicht wie man sich dazu Hilfe 
beschaffen soll.


----------



## KSG9|sebastian (6. Dez 2012)

Sicher das OSM vernünftig geladen wurde?

Laut Exception ...

```
(TypeError): $wnd.OpenLayers
```
... gibt es die Funktion nicht, was darauf schließen lässt, das OSM nicht korrekt geladen wurde?

Hast du den Eintrag in der gwt.xml? Muss irgendwas noch speziel aufgerufen werden?

Ich kenn mit mit OSM halt gar nicht aus, der ist es ein wenig Fischen im Trüben...


----------



## gwtosm (6. Dez 2012)

Meine .gwt.xml sieht so aus:


```
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<module rename-to="MapExample">
	<inherits name="org.gwtopenmaps.openlayers.OpenLayers"/>
  	<inherits name='com.google.gwt.user.theme.clean.Clean'/>
  	<inherits name='com.google.gwt.user.User'/>
	
  	<entry-point class="myPackage.client.View"/>
</module>
```

Was heißt "nicht korrekt geladen"? Ich habe wie beschrieben
die Dependencys gesetzt und den Example-Code kopiert.


----------



## gman (6. Dez 2012)

> Was heißt "nicht korrekt geladen"?



Siehe hier, die Host-Page muss noch angepasst werden.


----------



## gwtosm (6. Dez 2012)

Genau das habe ich doch getan....

Die beiden Skripte sind eingebunden, habe ich oben gepostet (ist übrigens nicht die Host.html, sondern die Application.html wobei Application eben für den Namen steht, den man gewählt hat, die Host.html befindet sich ganz wo anders)

Under Code ist genau der von dem Link den du gepostet hast.


----------



## gman (6. Dez 2012)

Sorry, das war aus deinem ersten Post nicht ganz klar ersichtlich und es hätte halt zu der Fehlermeldung
gepasst, schade. Und das es bei dir Application.html heißt habe ich wohl mitbekommen. Jedoch heißen 
diese Seiten im Google-Slang halt Host-Pages (siehe).


----------



## gwtosm (7. Dez 2012)

*Solved*

Osmarander und Maplint wird nicht mehr unterstützt.
Einfach rauß damit ausm Code und alles funktioniert


----------

