Ignore:
Timestamp:
2008-04-12T15:59:42+02:00 (17 years ago)
Author:
tim
Message:

CHANGED slippy_map_chooser:

  • Tried to fix ticket #629 and #599 (IllegalArgumentException when zooming on Japan)

ADDED to slippy_map_chooser:

  • Patch (Ticket #678): Zooming doesn't take cursor location into consideration (now it does thanks to Johannes Rudolph)
  • Patch (Ticket #678): When zooming use parent tiles while new tiles are loading (by Johannes Rudolph)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/slippy_map_chooser/src/SlippyMapChooser.java

    r7199 r7343  
    185185                                OsmTile t = iTileDB.get(OsmTile.key(iZoomlevel,  (-iOffsetX + x*OsmTile.WIDTH)/OsmTile.WIDTH, ((-iOffsetY+ y*OsmTile.HEIGHT)/OsmTile.HEIGHT)));
    186186                                if(t != null){
    187                                         t.paint(g);                                             
     187                                        t.paint(g,iTileDB);                                             
    188188                                }
    189189                        }
     
    204204               
    205205                iSizeButton.paint(g);
     206               
     207               
     208                if(SlippyMapChooserPlugin.DEBUG_MODE){
     209                        g.setColor(Color.black);
     210                        g.drawString("Free Memory: " + Runtime.getRuntime().freeMemory()/1024 + "/" + Runtime.getRuntime().totalMemory()/1024 + "kB" , 5, 50);
     211                        g.drawString("Tiles in DB: " + iTileDB.getCachedTilesSize(), 5, 65);
     212                        g.drawString("Loading Queue Size: " + iTileDB.getLoadingQueueSize(), 5, 80);
     213                       
     214                }
    206215        }
    207216
     
    356365         * Callback for OsmMapControl. Zoom out one level               
    357366         */
    358         void zoomIn(){ 
     367        void zoomIn(Point curPos){     
    359368               
    360369                //cache center of screen and the selection rectangle
    361                 LatLon l = getLatLonOfScreenPoint(new Point(getWidth()/2, getHeight()/2));
     370                LatLon l = getLatLonOfScreenPoint(curPos);
    362371                LatLon selStart = null;
    363372                LatLon selEnd   = null;
     
    374383                }
    375384                                       
    376                 //center on cached location
    377                 centerOnLatLon(l);
     385                setLatLonAtPoint(l, curPos);
    378386               
    379387                //restore selection
     
    394402         * Callback for OsmMapControl.
    395403         */
    396         void zoomOut(){
     404        void zoomOut(Point curPos){
    397405                //cache center of screen and the selction rect
    398                 LatLon l = getLatLonOfScreenPoint(new Point(getWidth()/2, getHeight()/2));
     406                LatLon l = getLatLonOfScreenPoint(curPos);
    399407                LatLon selStart = null;
    400408                LatLon selEnd   = null;
     
    411419                }
    412420               
    413                 //center on cached location
    414                 centerOnLatLon(l);
     421                setLatLonAtPoint(l, curPos);
    415422               
    416423                //restore selection
     
    485492         * @param aLatLon the location to center on
    486493         */
    487         private void centerOnLatLon(LatLon aLatLon){           
     494        private void centerOnLatLon(LatLon aLatLon){
     495                setLatLonAtPoint(aLatLon, new Point(getWidth()/2,getHeight()/2));
     496        }
     497
     498        /**
     499         * Moves the map that the specified latLon is shown at the point on screen
     500         * given
     501         * @param aLatLon a position
     502         * @param p a point on the screen
     503         */
     504        private void setLatLonAtPoint(LatLon aLatLon, Point p){
    488505                int x = OsmMercator.LonToX(aLatLon.lon(), iZoomlevel);
    489506                int y = OsmMercator.LatToY(aLatLon.lat(), iZoomlevel);
    490                 iOffsetX = -x +getWidth()/2;
    491                 iOffsetY = -y +getHeight()/2;
     507                iOffsetX = - x + p.x;
     508                iOffsetY = - y + p.y;
    492509                repaint();
    493510        }
Note: See TracChangeset for help on using the changeset viewer.