I've found the problem and updated the issue. I've got a proposed solution out for review on the Google-Web-Toolkit-Contributors mailing list.
On Fri, Sep 26, 2008 at 7:52 AM, Eric Ayers <[EMAIL PROTECTED]> wrote: > 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/ > -- 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 Google-Web-Toolkit@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---