Tim, I couldn't find anything obviously wrong in your projection implementation, so I created an issue for this problem:
http://code.google.com/p/gwt-google-apis/issues/detail?id=180 Let me know if you have made any progress on the issue - I'll keep looking at it today. -Eric. On Thu, Sep 25, 2008 at 6:45 PM, Eric Ayers <[EMAIL PROTECTED]> wrote: > OK, I've copied your code into a project and I see the same problem. The > next step to debug this would be to set break points in each of the > customized methods for NorthmoorMapProjection and step through in hosted > mode. > > > On Thu, Sep 25, 2008 at 12:47 AM, Tim White <[EMAIL PROTECTED]> wrote: > >> >> Hi - >> >> When defining a custom Projection using GWT 1.5.2 and gwt-maps-1.0 >> RC1, I can't seem to get around this: >> >> com.google.gwt.dev.shell.HostedModeException: Expected primitive type >> boolean; actual value was undefined >> at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:51) >> at >> >> com.google.gwt.dev.shell.ie.SwtOleGlue.convertVariantsToObjects(SwtOleGlue.java: >> 57) >> at >> com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod(IDispatchImpl.java: >> 119) >> at >> com.google.gwt.dev.shell.ie.IDispatchProxy.invoke(IDispatchProxy.java: >> 155) >> at >> com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java: >> 294) >> at >> com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java: >> 194) >> at >> org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java: >> 117) >> at org.eclipse.swt.internal.ole.win32.COM.VtblCall(Native Method) >> at >> org.eclipse.swt.internal.ole.win32.IDispatch.Invoke(IDispatch.java: >> 64) >> at >> org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java: >> 493) >> at >> org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java: >> 417) >> at >> >> com.google.gwt.dev.shell.ie.ModuleSpaceIE6.doInvokeOnWindow(ModuleSpaceIE6.java: >> 67) >> at >> com.google.gwt.dev.shell.ie.ModuleSpaceIE6.doInvoke(ModuleSpaceIE6.java: >> 152) >> at >> com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java: >> 447) >> at >> com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java: >> 248) >> at >> >> com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java: >> 107) >> at >> com.google.gwt.maps.client.impl.__MapImplImpl.checkResize(transient >> source for com.google.gwt.maps.client.impl.__MapImplImpl) >> at com.google.gwt.maps.client.MapWidget.checkResize(MapWidget.java: >> 729) >> at >> com.google.gwt.maps.client.MapWidget.onAttach(MapWidget.java:1507) >> at com.google.gwt.user.client.ui.Widget.setParent(Widget.java:231) >> at com.google.gwt.user.client.ui.Panel.adopt(Panel.java:119) >> at >> com.google.gwt.user.client.ui.ComplexPanel.add(ComplexPanel.java: >> 86) >> at >> com.google.gwt.user.client.ui.AbsolutePanel.add(AbsolutePanel.java: >> 80) >> at >> >> com.cyface.northmoor.map.client.NorthmoorMap.onModuleLoad(NorthmoorMap.java: >> 64) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: >> 39) >> at >> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: >> 25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at >> com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:320) >> at >> >> com.google.gwt.dev.shell.BrowserWidget.attachModuleSpace(BrowserWidget.java: >> 329) >> at com.google.gwt.dev.shell.ie.BrowserWidgetIE6.access >> $300(BrowserWidgetIE6.java:37) >> at >> >> com.google.gwt.dev.shell.ie.BrowserWidgetIE6$External.gwtOnLoad(BrowserWidgetIE6.java: >> 76) >> at >> >> com.google.gwt.dev.shell.ie.BrowserWidgetIE6$External.invoke(BrowserWidgetIE6.java: >> 139) >> at >> com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java: >> 294) >> at >> com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java: >> 194) >> at >> org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java: >> 117) >> at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native >> Method) >> at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925) >> at >> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966) >> at com.google.gwt.dev.GWTShell.pumpEventLoop(GWTShell.java:720) >> at com.google.gwt.dev.GWTShell.run(GWTShell.java:593) >> at com.google.gwt.dev.GWTShell.main(GWTShell.java:357) >> >> My projection class: >> >> public class NorthmoorMapProjection extends Projection { >> int imageDimension = 65536; >> int maxZoom = 5; >> int tileSize = 256; >> Point[] pixelOrigin = new Point[maxZoom]; >> int[] pixelsPerLonDegree = new int[maxZoom]; >> int[] tileBounds = new int[maxZoom]; >> boolean isWrapped = false; >> >> public NorthmoorMapProjection() { >> int currentTileSize = this.tileSize; >> int currentTileBounds = 1; >> for (int zoomLevel = 0; zoomLevel < this.maxZoom; >> zoomLevel++) { >> int tileCenter = currentTileSize / 2; >> this.pixelsPerLonDegree[zoomLevel] = >> currentTileSize / 360; >> this.pixelOrigin[zoomLevel] = >> Point.newInstance(tileCenter, >> tileCenter); >> this.tileBounds[zoomLevel] = currentTileBounds; >> currentTileSize *= 2; >> currentTileBounds *= 2; >> } >> } >> >> @Override >> public Point fromLatLngToPixel(LatLng latLng, int zoomLevel) { >> Point pixelOrigin = this.pixelOrigin[zoomLevel]; >> int pixelOriginX = pixelOrigin.getX(); >> int pixelOriginY = pixelOrigin.getY(); >> int pixelsPerLonDegreeForCurrentZoom = >> this.pixelsPerLonDegree[zoomLevel]; >> double currentLongitude = latLng.getLongitude(); >> double currentLatitude = latLng.getLatitude(); >> long newX = Math.round(pixelOriginX + currentLongitude * >> pixelsPerLonDegreeForCurrentZoom); >> long newY = Math.round(pixelOriginY + (-2 * >> currentLatitude) * >> pixelsPerLonDegreeForCurrentZoom); >> int newXint = new Long(newX).intValue(); >> int newYint = new Long(newY).intValue(); >> return Point.newInstance(newXint, newYint); >> } >> >> @Override >> public LatLng fromPixelToLatLng(Point point, int zoomLevel, boolean >> unbounded) { >> Point pixelOrigin = this.pixelOrigin[zoomLevel]; >> int pixelOriginX = pixelOrigin.getX(); >> int pixelOriginY = pixelOrigin.getY(); >> int pixelsPerLonDegreeForCurrentZoom = >> this.pixelsPerLonDegree[zoomLevel]; >> int currentX = point.getX(); >> int currentY = point.getY(); >> double d = currentX - pixelOriginX / >> pixelsPerLonDegreeForCurrentZoom; >> double e = -0.5 * (currentY - pixelOriginY) / >> pixelsPerLonDegreeForCurrentZoom; >> return LatLng.newInstance(e, d, unbounded); >> >> } >> >> @Override >> public double getWrapWidth(int zoomLevel) { >> return this.tileBounds[zoomLevel] * this.tileSize; >> } >> >> @Override >> public boolean tileCheckRange(TileIndex index, int zoomLevel, int >> tileSize) { >> int tileBounds = this.tileBounds[zoomLevel]; >> int newX = index.getX(); >> if (index.getY() < 0 || index.getY() >= tileBounds) { >> return false; >> } >> if (this.isWrapped) { >> if (index.getX() < 0 || index.getX() >= tileBounds) >> { >> newX = index.getX() % tileBounds; >> if (index.getX() < 0) { >> newX += tileBounds; >> } >> } >> } else { >> if (index.getX() < 0 || index.getX() >= tileBounds) >> { >> return false; >> } >> } >> return true; >> } >> >> >> Any thoughts? Thanks! >> >> Tim >> >> >> >> > > > -- > Eric Z. Ayers - GWT Team - Atlanta, GA USA > http://code.google.com/webtoolkit/ > -- Eric Z. Ayers - GWT Team - Atlanta, GA USA http://code.google.com/webtoolkit/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
