Re: Fix for panning problem

From: Don Dietrick <dietrick@bbn.com>
Date: Tue May 14 2002 - 22:23:58 EDT

I think you're right. It should at least be an option, but the expected
behavior is to move pixel-wise, isn't it?

Thanks for the input,

Don

On Tuesday, May 14, 2002, at 08:36 PM, Geoffrey S. Knauth wrote:

> Don,
>
> I wonder if up-right should be 45N always. Let's say some freaky user,
> traveling south, has "up" mapped to south and "down" mapped to north.
> Maybe not your average user, but imagine pressing up-right and having
> the pan move down and to the left.
>
> I wonder how often users don't have their X-Y axes oriented with N/S.
> Maybe there should be a toggle somewhere:
>
> Panning Is Relative To:
> (X) North/South on Map
> ( ) X/Y on Screen
>
> Geoffrey
>
> On Mon, 2002-05-13 at 17:45, Don Dietrick wrote:
>> Right, that's where the disconnect in the OpenMap code is - The
>> navigation tool expects the pan factor to be specified in percentage of
>> screen, and the projection classes want decimal degrees.
>>
>> The problem is coming up with an algorithm that works in any projection
>> that gives expected behavior. When users click on the up-right arrow,
>> do they expect to go in the up-right direction in x/y space, or do they
>> expect to go in a 45N azimuth direction. They may not be the same. I
>> think they mean to go in the 45N azimuth, which means you have to do a
>> little more trig to figure out how far to pan. I don't think it's
>> really that hard to do, it just needs to be worked out, and the
>> OMToolSet components need to be updated to use the properties.
>>
>> - Don
>>
>>
>>
>> On Monday, May 13, 2002, at 04:53 PM, Chris Hopkins wrote:
>>
>>>
>>> Hi Don -
>>>
>>> Good point. Yes, that's exactly what I'm seeing. It still does
>>> pan the specified number of degrees but it does seem as if it
>>> is notpanning as much as it should if you zoom out a lot. I
>>> never noticed since we are focused on a particular area of
>>> the map and we're never zooming out to really notice the
>>> difference. So, I guess it depends on your point of view. Are
>>> you specifying a percentage of screen to pan or a set degree
>>> value? I think you are talking about percentage of screen which
>>> does seem to make the most sense.
>>>
>>> For the time being, this little hack will work for our purposes.
>>> If we have a need to zoom out to that extent, I'll look into it
>>> again.
>>>
>>> Thanks,
>>> Chris
>>>
>>>> -----Original Message-----
>>>> From: Don Dietrick [mailto:dietrick@bbn.com]
>>>> Sent: Monday, May 13, 2002 4:44 PM
>>>> To: Chris Hopkins
>>>> Cc: 'openmap-users@bbn.com'
>>>> Subject: Re: Fix for panning problem
>>>>
>>>>
>>>> Hi Chris,
>>>>
>>>> How does this work out when you change scales? Seems that if
>>>> you zoom
>>>> out, the pan factor will appear to diminish, likewise the
>>>> opposite when
>>>> you zoom in. If you don't zoom in or out, it's not a problem, but if
>>>> you do, you may need to recalculate the factor to figure out how many
>>>> degrees to pan in that direction to move the screen a certain
>>>> amount.
>>>> At least, that's the way I remember what the major obstacle to this
>>>> problem was.
>>>>
>>>> Cheers,
>>>>
>>>> Don
>>>>
>>>> On Monday, May 13, 2002, at 12:36 PM, Chris Hopkins wrote:
>>>>
>>>>>
>>>>> Hi Don, et. al. -
>>>>>
>>>>> Here is a fix I made for the panning problem. It allows me
>>>> to customize
>>>>> the
>>>>> amount the map pans when I click on one of the panning
>>>> buttons. The fix
>>>>> ultimately lies in the actionPerformed of the NavigatePanel
>>>> class. I've
>>>>> created
>>>>> a subclass of the NavigatePanel for our own purposes and wired that
>>>>> into a
>>>>> customized OMToolSet object (extending both of those...I
>>>> made no changes
>>>>> to the OpenMap source). I use our custom OMToolSet object in the
>>>>> openmap.properties file now. The MICAProperties object is a
>>>> statically
>>>>> accessed object I came up with for accessing the OpenMap properties
>>>>> object. So for a real fix, the OpenMap properties will need to be
>>>>> accessed
>>>>> if you want it customizeable through the props file.
>>>>>
>>>>> Here is what the new actionPerformed method looks like
>>>> along with a new
>>>>> firePaneEvent method. Also, because this is a customized
>>>> NavigatePanel
>>>>> and I didn't want to have to worry about where the images
>>>> where for the
>>>>> navigation UI were, I overloaded the addImageIcon method. I
>>>> included
>>>>> that
>>>>> one as well. That way you can just pick up the images in the OpenMap
>>>>> .jar file.
>>>>>
>>>>> public void actionPerformed(java.awt.event.ActionEvent e) {
>>>>>
>>>>> String command = e.getActionCommand();
>>>>>
>>>>> float panf = 45.0f;
>>>>> Object ob = MICAProperties.get("mica.panfactor");
>>>>> if(ob != null)
>>>>> {
>>>>> String panamt = (String)ob;
>>>>> panf = Float.valueOf(panamt).floatValue();
>>>>> }
>>>>>
>>>>> if (command.equals(panNWCmd)) {
>>>>> firePanEvent(-45f, panf);
>>>>> } else if (command.equals(panNCmd)) {
>>>>> firePanEvent(0f, panf);
>>>>> } else if (command.equals(panNECmd)) {
>>>>> firePanEvent(45f, panf);
>>>>> } else if (command.equals(panECmd)) {
>>>>> firePanEvent(90f, panf);
>>>>> } else if (command.equals(panSECmd)) {
>>>>> firePanEvent(135f, panf);
>>>>> } else if (command.equals(panSCmd)) {
>>>>> firePanEvent(180f, panf);
>>>>> } else if (command.equals(panSWCmd)) {
>>>>> firePanEvent(-135f, panf);
>>>>> } else if (command.equals(panWCmd)) {
>>>>> firePanEvent(-90f, panf);
>>>>> } else if (command.equals(centerCmd)) {
>>>>> // go back to the center point
>>>>>
>>>>> float lat;
>>>>> float lon;
>>>>> if (useDefaultCenter) {
>>>>> lat = defaultCenterLat;
>>>>> lon = defaultCenterLon;
>>>>> } else {
>>>>> lat = Environment.getFloat(Environment.Latitude, 0f);
>>>>> lon = Environment.getFloat(Environment.Longitude, 0f);
>>>>> }
>>>>> fireCenterEvent(lat, lon);
>>>>> }
>>>>> }
>>>>>
>>>>> protected synchronized void firePanEvent(float az, float c) {
>>>>> System.out.println("Panning..." + c);
>>>>> panDelegate.firePan(az, c);
>>>>> }
>>>>>
>>>>> protected ImageIcon addImageIcon(ImageIcon imageIcon,
>>>>> String imageName,
>>>>> String imageTip) {
>>>>> URL url = NavigatePanel.class.getResource(imageName);
>>>>> imageIcon = new ImageIcon(url, imageTip);
>>>>> return imageIcon;
>>>>> }
>>>>>
>>>>> The 'panf' amount ends up being the degrees you wish to pan. I
>>>>> currently have it set to 0.5 and that seems to be a good amount
>>>>> for what we want to do. There is some noticeable flicker if you
>>>>> do this in rapid succession but I can live with that for the time
>>>>> being.
>>>>>
>>>>> Feel free to use this to your hearts content. Not sure if
>>>> this is what
>>>>> you intended or not but that's how I fixed it. ;) Feel free
>>>> to ask me
>>>>> any questions or if you want me to send you the source code.
>>>>>
>>>>> Chris Hopkins
>>>>> Software Engineer
>>>>> Charles River Analytics
>>>>>
>>>>> --
>>>>> [To unsubscribe to this list send an email to "majdart@bbn.com"
>>>>> with the following text in the BODY of the message "unsubscribe
>>>>> openmap-users"]
>>>>>
>>>>>

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Don Dietrick, BBN Technologies, dietrick@bbn.com
10 Moulton Street, Cambridge, MA 02138
617-873-3031 [fax]-2794
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>>>>
>>>
>>
>> --
>> [To unsubscribe to this list send an email to "majdart@bbn.com"
>> with the following text in the BODY of the message "unsubscribe
>> openmap-users"]
>>
> --
> Geoffrey S. Knauth http://knauth.org/gsk
>

--
[To unsubscribe to this list send an email to "majdart@bbn.com"
with the following text in the BODY of the message "unsubscribe openmap-users"]
Received on Tue May 14 22:24:44 2002

This archive was generated by hypermail 2.1.8 : Thu May 12 2005 - 07:18:33 EDT