Thanks Eric!
On Sep 26, 9:49 am, "Eric Ayers" <[EMAIL PROTECTED]> wrote:
> 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;
> >>> }
> >>> }
>
> >>> [EMAIL PROTECTED]
> >>> 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);
> >>> }
>
> >>> [EMAIL PROTECTED]
> >>> 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);
>
> >>> }
>
> >>> [EMAIL PROTECTED]
> >>> public double getWrapWidth(int zoomLevel) {
> >>> return this.tileBounds[zoomLevel] * this.tileSize;
> >>> }
>
> >>> [EMAIL PROTECTED]
> >>> 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 USAhttp://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
-~----------~----~----~----~------~----~------~--~---