[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [udig-devel] DropAction Coordinate from DropEvent won't convert correctly
|
It works!!!! Thanks so much for the info and superfast reply Jesse.
Pete
Jesse Eichar wrote:
>
> Hi,
>
> There are 2 possible issues here:
>
> 1. I think that the drop coordinates are with respect to the
> Display, Not the Map. So first thing that has to be done is it has
> to be converted to the map coordinates. Fortunately the Viewport is
> a Composite so it is easy. Here's a snippet for you:
>
>
> @Override
> public void perform( IProgressMonitor monitor ) {
> final String string=getData().toString();
>
> // Since I declared my target to be a ViewportPane then I
> know that is what the
> // destination is going to be.
> MapEditor editor=(MapEditor) getDestination();
>
> // In order to know where to draw the string we have to
> calculate where the
> // drop event has taken place with respect to the ViewportPane.
> // The Event returns the location but it is w.r.t the Display.
> // All SWT widgets have helper methods to determine this so:
> Control control=editor.getComposite();
> final Point drawLocation = control.toControl(getEvent().x,
> getEvent().y);
>
> // By Adding a custom draw command we can draw on the
> viewport model...
> editor.getMap().sendCommandASync(new AbstractDrawCommand(){
>
> public Rectangle getValidArea() {
> // I'm being lazy and returning null so that this
> will be re-drawn every time the
> // Viewport is updated.
> return null;
> }
>
> public void run( IProgressMonitor monitor ) throws
> Exception {
> // draw the string
> graphics.drawString(string, drawLocation.x,
> drawLocation.y,
> ViewportGraphics.ALIGN_LEFT,
> ViewportGraphics.ALIGN_BOTTOM);
> }
>
> });
>
> }
>
> For this example to work the target of the operation must be a
> MapEditor.
>
> 2.
> PixelToWorld Converts from the Screen to the Map (the CRS provided by
> the ViewportModel). You have to convert the coordinate from the map
> CRS to the layer CRS. I made a code example that you can look at here:
>
> <http://svn.geotools.org/udig/branches/1.1.x/udig/tutorials/
> net.refractions.udig.code.examples/src/net/refractions/udig/code/
> examples/PickTool.java>
>
>
> Hope this helps,
>
> Jesse
>
>
>
> On 16-Jan-07, at 7:51 AM, ukpete wrote:
>
>>
>> Hello all,
>>
>> I have a noob kind of problem, pixelToWorld doesnt seem to be
>> converting my
>> screen coordinates correctly to the specific layer I am dropping
>> on. The
>> coordinates are "off" sometimes by a significant percentage. Here
>> is an
>> example of the code I first attempted:
>>
>> clickedLocation =
>> ApplicationGIS.createContext(ApplicationGIS.getActiveMap
>> ()).pixelToWorld(this.getEvent().x,
>> this.getEvent().y);
>>
>> I've also used this:
>>
>> clickedLocation =
>> currentMap.getViewportModel().pixelToWorld(this.getEvent().x,
>> this.getEvent().y);
>>
>> I suspect its something to do with the CRS of the layer I am
>> drawing on - is
>> there a snippet of code out there that will resolve this regardless
>> of the
>> layer I am dropping onto? This code is embedded inside a
>> DropAction object
>> added through the usual extension mechanism, thus the event I am
>> using is a
>> DropEvent - if that makes any difference...
>>
>> Kind Regards,
>>
>> Pete Cornwell
>> --
>> View this message in context: http://www.nabble.com/DropAction-
>> Coordinate-from-DropEvent-won%27t-convert-correctly-
>> tf3021691.html#a8392444
>> Sent from the udig-devel mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> User-friendly Desktop Internet GIS (uDig)
>> http://udig.refractions.net
>> http://lists.refractions.net/mailman/listinfo/udig-devel
>
>
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel
>
>
--
View this message in context: http://www.nabble.com/DropAction-Coordinate-from-DropEvent-won%27t-convert-correctly-tf3021691.html#a8396318
Sent from the udig-devel mailing list archive at Nabble.com.