Changeset 16162 in osm for applications
- Timestamp:
- 2009-06-26T22:11:40+02:00 (15 years ago)
- Location:
- applications/editors/josm/plugins
- Files:
-
- 4 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/terracer/build.xml
r15858 r16162 26 26 <attribute name="Plugin-Description" value="Make terraced houses out of single blocks."/> 27 27 <attribute name="Plugin-Link" value="http://wiki.openstreetmap.org/wiki/JOSM/Plugins/Terracer"/> 28 <attribute name="Plugin-Mainversion" value="1 598"/>28 <attribute name="Plugin-Mainversion" value="1638"/> 29 29 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/> 30 30 </manifest> -
applications/editors/josm/plugins/terracer/src/terracer/TerracerAction.java
r14048 r16162 1 1 /** 2 2 * Terracer: A JOSM Plugin for terraced houses. 3 * 3 * 4 4 * Copyright 2009 CloudMade Ltd. 5 * 5 * 6 6 * Released under the GPLv2, see LICENSE file for details. 7 7 */ … … 11 11 import static org.openstreetmap.josm.tools.I18n.trn; 12 12 13 import java.awt.BorderLayout;14 13 import java.awt.Choice; 15 14 import java.awt.Component; … … 20 19 import java.awt.event.KeyEvent; 21 20 import java.util.ArrayList; 22 import java.util.Arrays;23 21 import java.util.Collection; 24 22 import java.util.Collections; 25 import java.util.HashMap;26 23 import java.util.LinkedList; 27 import java.util.List;28 import java.util.Map;29 import java.util.TreeMap;30 24 import java.util.TreeSet; 31 25 32 import javax.swing.JComponent;33 26 import javax.swing.JFormattedTextField; 34 27 import javax.swing.JLabel; … … 36 29 import javax.swing.JPanel; 37 30 import javax.swing.JSpinner; 38 import javax.swing.JTextField;39 31 import javax.swing.SpinnerNumberModel; 40 import javax.swing.SpringLayout;41 32 import javax.swing.event.ChangeEvent; 42 33 import javax.swing.event.ChangeListener; … … 53 44 import org.openstreetmap.josm.data.osm.RelationMember; 54 45 import org.openstreetmap.josm.data.osm.Way; 55 import org.openstreetmap.josm.gui.tagging.TaggingPreset.Item;56 46 import org.openstreetmap.josm.tools.AutoCompleteComboBox; 57 47 import org.openstreetmap.josm.tools.GBC; … … 62 52 * Terraces a quadrilateral, closed way into a series of quadrilateral, 63 53 * closed ways. 64 * 54 * 65 55 * At present it only works on quadrilaterals, but there is no reason 66 * why it couldn't be extended to work with other shapes too. The 67 * algorithm employed is naive, but it works in the simple case. 68 * 56 * why it couldn't be extended to work with other shapes too. The 57 * algorithm employed is naive, but it works in the simple case. 58 * 69 59 * @author zere 70 60 */ … … 76 66 77 67 public TerracerAction() { 78 super(tr("Terrace a building"), 79 "terrace", 68 super(tr("Terrace a building"), 69 "terrace", 80 70 tr("Creates individual buildings from a long building."), 81 Shortcut.registerShortcut("tools:Terracer", 71 Shortcut.registerShortcut("tools:Terracer", 82 72 tr("Tool: {0}", tr("Terrace a building")), 83 KeyEvent.VK_T, Shortcut.GROUP_EDIT, 73 KeyEvent.VK_T, Shortcut.GROUP_EDIT, 84 74 Shortcut.SHIFT_DEFAULT), 85 75 true); … … 112 102 optionPane.createDialog(Main.parent, title).setVisible(true); 113 103 Object answerObj = optionPane.getValue(); 114 if (answerObj != null && 104 if (answerObj != null && 115 105 answerObj != JOptionPane.UNINITIALIZED_VALUE && 116 (answerObj instanceof Integer && 106 (answerObj instanceof Integer && 117 107 (Integer)answerObj == JOptionPane.OK_OPTION)) { 118 108 119 109 // call out to the method which does the actual 120 110 // terracing. 121 terraceBuilding(way, 122 dialog.numberFrom(), 111 terraceBuilding(way, 112 dialog.numberFrom(), 123 113 dialog.numberTo(), 124 114 dialog.stepSize(), … … 137 127 138 128 if (badSelect) { 139 JOptionPane.showMessageDialog(Main.parent, 129 JOptionPane.showMessageDialog(Main.parent, 140 130 tr("Select a single, closed way of at least four nodes.")); 141 131 } … … 144 134 /** 145 135 * Terraces a single, closed, quadrilateral way. 146 * 136 * 147 137 * Any node must be adjacent to both a short and long edge, we naively 148 138 * choose the longest edge and its opposite and interpolate along them 149 139 * linearly to produce new nodes. Those nodes are then assembled into 150 140 * closed, quadrilateral ways and left in the selection. 151 * 141 * 152 142 * @param w The closed, quadrilateral way to terrace. 153 143 */ … … 167 157 Collection<Way> ways = new LinkedList<Way>(); 168 158 169 // create intermediate nodes by interpolating. 159 // create intermediate nodes by interpolating. 170 160 for (int i = 0; i <= nb; ++i) { 171 new_nodes[0][i] = interpolateAlong(interp.a, frontLength * ( double)(i) / (double)(nb));172 new_nodes[1][i] = interpolateAlong(interp.b, backLength * ( double)(i) / (double)(nb));161 new_nodes[0][i] = interpolateAlong(interp.a, frontLength * (i) / (nb)); 162 new_nodes[1][i] = interpolateAlong(interp.b, backLength * (i) / (nb)); 173 163 commands.add(new AddCommand(new_nodes[0][i])); 174 164 commands.add(new AddCommand(new_nodes[1][i])); … … 214 204 * Creates a node at a certain distance along a way, as calculated by the 215 205 * great circle distance. 216 * 217 * Note that this really isn't an efficient way to do this and leads to 206 * 207 * Note that this really isn't an efficient way to do this and leads to 218 208 * O(N^2) running time for the main algorithm, but its simple and easy 219 209 * to understand, and probably won't matter for reasonable-sized ways. 220 * 210 * 221 211 * @param w The way to interpolate. 222 212 * @param l The length at which to place the node. … … 226 216 Node n = null; 227 217 for (Pair<Node,Node> p : w.getNodePairs(false)) { 228 final double seg_length = p.a. coor.greatCircleDistance(p.b.coor);218 final double seg_length = p.a.getCoor().greatCircleDistance(p.b.getCoor()); 229 219 if (l <= seg_length) { 230 220 n = interpolateNode(p.a, p.b, l / seg_length); … … 245 235 * Calculates the great circle length of a way by summing the great circle 246 236 * distance of each pair of nodes. 247 * 237 * 248 238 * @param w The way to calculate length of. 249 239 * @return The length of the way. … … 252 242 double length = 0.0; 253 243 for (Pair<Node,Node> p : w.getNodePairs(false)) { 254 length += p.a. coor.greatCircleDistance(p.b.coor);244 length += p.a.getCoor().greatCircleDistance(p.b.getCoor()); 255 245 } 256 246 return length; … … 258 248 259 249 /** 260 * Given a way, try and find a definite front and back by looking at the 250 * Given a way, try and find a definite front and back by looking at the 261 251 * segments to find the "sides". Sides are assumed to be single segments 262 252 * which cannot be contiguous. 263 * 253 * 264 254 * @param w The way to analyse. 265 255 * @return A pair of ways (front, back) pointing in the same directions. … … 327 317 Node a = w.nodes.get(i); 328 318 Node b = w.nodes.get((i+1) % (w.nodes.size() - 1)); 329 return a. coor.greatCircleDistance(b.coor);319 return a.getCoor().greatCircleDistance(b.getCoor()); 330 320 } 331 321 … … 334 324 * into order and return the array of indexes such that, for a returned array 335 325 * x, a[x[i]] is sorted for ascending index i. 336 * 326 * 337 327 * This isn't efficient at all, but should be fine for the small arrays we're 338 328 * expecting. If this gets slow - replace it with some more efficient algorithm. 339 * 329 * 340 330 * @param a The array to sort. 341 * @return An array of indexes, the same size as the input, such that a[x[i]] 331 * @return An array of indexes, the same size as the input, such that a[x[i]] 342 332 * is in sorted order. 343 333 */ … … 370 360 371 361 /** 372 * Calculate "sideness" metric for each segment in a way. 362 * Calculate "sideness" metric for each segment in a way. 373 363 */ 374 364 private double[] calculateSideness(Way w) { … … 385 375 } 386 376 sideness[length-1] = calculateSideness( 387 w.nodes.get(length - 2), w.nodes.get(length - 1), 377 w.nodes.get(length - 2), w.nodes.get(length - 1), 388 378 w.nodes.get(length), w.nodes.get(1)); 389 379 … … 397 387 */ 398 388 private double calculateSideness(Node a, Node b, Node c, Node d) { 399 final double ndx = b. coor.getX() - a.coor.getX();400 final double pdx = d. coor.getX() - c.coor.getX();401 final double ndy = b. coor.getY() - a.coor.getY();402 final double pdy = d. coor.getY() - c.coor.getY();403 404 return (ndx * pdx + ndy * pdy) / 389 final double ndx = b.getCoor().getX() - a.getCoor().getX(); 390 final double pdx = d.getCoor().getX() - c.getCoor().getX(); 391 final double ndy = b.getCoor().getY() - a.getCoor().getY(); 392 final double pdy = d.getCoor().getY() - c.getCoor().getY(); 393 394 return (ndx * pdx + ndy * pdy) / 405 395 Math.sqrt((ndx * ndx + ndy * ndy) * (pdx * pdx + pdy * pdy)); 406 396 } … … 426 416 chi = new JSpinner(hi); 427 417 428 lo.addChangeListener(new ChangeListener() { 418 lo.addChangeListener(new ChangeListener() { 429 419 public void stateChanged(ChangeEvent e) { 430 420 hi.setMinimum((Integer)lo.getNumber()); 431 421 } 432 422 }); 433 hi.addChangeListener(new ChangeListener() { 423 hi.addChangeListener(new ChangeListener() { 434 424 public void stateChanged(ChangeEvent e) { 435 425 lo.setMaximum((Integer)hi.getNumber()); … … 521 511 522 512 /** 523 * Generates a list of all visible names of highways in order to do 513 * Generates a list of all visible names of highways in order to do 524 514 * autocompletion on the road name. 525 515 */ … … 539 529 * Creates a new node at the interpolated position between the argument 540 530 * nodes. Interpolates linearly in Lat/Lon coordinates. 541 * 531 * 542 532 * @param a First node, at which f=0. 543 533 * @param b Last node, at which f=1. … … 551 541 552 542 /** 553 * Calculates the interpolated position between the argument nodes. Interpolates 543 * Calculates the interpolated position between the argument nodes. Interpolates 554 544 * linearly in Lat/Lon coordinates. 555 * 545 * 556 546 * @param a First node, at which f=0. 557 547 * @param b Last node, at which f=1. … … 563 553 // screen coordinates rather than lat/lon, but it doesn't seem to 564 554 // make a great deal of difference at the scale of most terraces. 565 return new LatLon(a. coor.lat() * (1.0 - f) + b.coor.lat() * f,566 a. coor.lon() * (1.0 - f) + b.coor.lon() * f);555 return new LatLon(a.getCoor().lat() * (1.0 - f) + b.getCoor().lat() * f, 556 a.getCoor().lon() * (1.0 - f) + b.getCoor().lon() * f); 567 557 } 568 558 } -
applications/editors/josm/plugins/utilsplugin/build.xml
r15127 r16162 25 25 <attribute name="Plugin-Date" value="${version.entry.commit.date}"/> 26 26 <attribute name="Plugin-Description" value="Several utilities that make your life easier: e.g. simplify way, join areas, jump to position."/> 27 <attribute name="Plugin-Mainversion" value="1 598"/>27 <attribute name="Plugin-Mainversion" value="1638"/> 28 28 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/> 29 29 </manifest> -
applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/JoinAreasAction.java
r15960 r16162 3 3 import static org.openstreetmap.josm.tools.I18n.marktr; 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 import static org.openstreetmap.josm.tools.I18n.trn; 6 5 6 import java.awt.GridBagLayout; 7 import java.awt.Polygon; 7 8 import java.awt.event.ActionEvent; 8 9 import java.awt.event.KeyEvent; 9 10 import java.awt.geom.Line2D; 10 import java.awt.geom.Point2D;11 import java.awt.GridBagLayout;12 import java.awt.Point;13 import java.awt.Polygon;14 15 11 import java.util.ArrayList; 16 import java.util.Arrays;17 12 import java.util.Collection; 18 13 import java.util.Collections; 19 import java.util.Comparator;20 14 import java.util.HashMap; 21 15 import java.util.LinkedList; 22 16 import java.util.List; 23 17 import java.util.Map; 24 import java.util.Map.Entry;25 18 import java.util.Set; 26 19 import java.util.TreeMap; 27 20 import java.util.TreeSet; 21 import java.util.Map.Entry; 28 22 29 23 import javax.swing.Box; … … 33 27 import javax.swing.JPanel; 34 28 29 import org.openstreetmap.josm.Main; 35 30 import org.openstreetmap.josm.actions.CombineWayAction; 36 31 import org.openstreetmap.josm.actions.JosmAction; 37 32 import org.openstreetmap.josm.actions.ReverseWayAction; 38 33 import org.openstreetmap.josm.actions.SplitWayAction; 39 40 34 import org.openstreetmap.josm.command.AddCommand; 41 35 import org.openstreetmap.josm.command.ChangeCommand; … … 43 37 import org.openstreetmap.josm.command.DeleteCommand; 44 38 import org.openstreetmap.josm.command.SequenceCommand; 45 46 39 import org.openstreetmap.josm.data.Bounds; 40 import org.openstreetmap.josm.data.UndoRedoHandler; 47 41 import org.openstreetmap.josm.data.coor.EastNorth; 48 42 import org.openstreetmap.josm.data.coor.LatLon; … … 54 48 import org.openstreetmap.josm.data.osm.RelationMember; 55 49 import org.openstreetmap.josm.data.osm.TigerUtils; 56 import org.openstreetmap.josm.data.osm.visitor.CollectBackReferencesVisitor;57 50 import org.openstreetmap.josm.data.osm.Way; 58 import org.openstreetmap.josm.data.osm.WaySegment;59 import org.openstreetmap.josm.data.projection.Epsg4326;60 import org.openstreetmap.josm.data.projection.Lambert;61 import org.openstreetmap.josm.data.projection.Mercator;62 import org.openstreetmap.josm.data.UndoRedoHandler;63 64 51 import org.openstreetmap.josm.gui.ExtendedDialog; 65 52 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 66 import org.openstreetmap.josm.Main;67 53 import org.openstreetmap.josm.tools.GBC; 68 import org.openstreetmap.josm.tools.Pair;69 54 import org.openstreetmap.josm.tools.Shortcut; 70 55 … … 83 68 this.pos = pos; 84 69 this.n = n; 85 this.dis = n. coor.greatCircleDistance(dis);70 this.dis = n.getCoor().greatCircleDistance(dis); 86 71 } 87 72 … … 160 145 boolean isInsideOneBoundingBox = false; 161 146 for (Bounds b : bounds) { 162 if (b.contains(node. coor)) {147 if (b.contains(node.getCoor())) { 163 148 isInsideOneBoundingBox = true; 164 149 break; … … 362 347 } 363 348 LatLon intersection = getLineLineIntersection( 364 a.nodes.get(i) . eastNorth.east(), a.nodes.get(i) .eastNorth.north(),365 a.nodes.get(i+1). eastNorth.east(), a.nodes.get(i+1).eastNorth.north(),366 b.nodes.get(j) . eastNorth.east(), b.nodes.get(j) .eastNorth.north(),367 b.nodes.get(j+1). eastNorth.east(), b.nodes.get(j+1).eastNorth.north());349 a.nodes.get(i) .getEastNorth().east(), a.nodes.get(i) .getEastNorth().north(), 350 a.nodes.get(i+1).getEastNorth().east(), a.nodes.get(i+1).getEastNorth().north(), 351 b.nodes.get(j) .getEastNorth().east(), b.nodes.get(j) .getEastNorth().north(), 352 b.nodes.get(j+1).getEastNorth().east(), b.nodes.get(j+1).getEastNorth().north()); 368 353 if(intersection == null) continue; 369 354 … … 373 358 nodes.add(n); 374 359 // The distance is needed to sort and add the nodes in direction of the way 375 nodesA.add(new NodeToSegs(i, n, a.nodes.get(i). coor));360 nodesA.add(new NodeToSegs(i, n, a.nodes.get(i).getCoor())); 376 361 if(same) 377 nodesA.add(new NodeToSegs(j, n, a.nodes.get(j). coor));362 nodesA.add(new NodeToSegs(j, n, a.nodes.get(j).getCoor())); 378 363 else 379 nodesB.add(new NodeToSegs(j, n, b.nodes.get(j). coor));364 nodesB.add(new NodeToSegs(j, n, b.nodes.get(j).getCoor())); 380 365 } 381 366 } … … 423 408 private void addNodesToWay(Way a, ArrayList<NodeToSegs> nodes) { 424 409 Way ax=new Way(a); 425 List<NodeToSegs> newnodes = new ArrayList<NodeToSegs>();426 410 Collections.sort(nodes); 427 411 … … 539 523 for(Way w: multigonWays) { 540 524 Polygon poly = new Polygon(); 541 for(Node n: ( (Way)w).nodes) poly.addPoint(latlonToXY(n.coor.lat()), latlonToXY(n.coor.lon()));525 for(Node n: (w).nodes) poly.addPoint(latlonToXY(n.getCoor().lat()), latlonToXY(n.getCoor().lon())); 542 526 543 527 for(Node n: multigonNodes) { 544 if(!( (Way)w).nodes.contains(n) && poly.contains(latlonToXY(n.coor.lat()), latlonToXY(n.coor.lon()))) {528 if(!(w).nodes.contains(n) && poly.contains(latlonToXY(n.getCoor().lat()), latlonToXY(n.getCoor().lon()))) { 545 529 getWaysByNode(innerWays, multigonWays, n); 546 530 } … … 564 548 private void getWaysByNode(Collection<Way> innerWays, Collection<Way> w, Node n) { 565 549 for(Way way : w) { 566 if(!( (Way)way).nodes.contains(n)) continue;550 if(!(way).nodes.contains(n)) continue; 567 551 if(!innerWays.contains(way)) innerWays.add(way); // Will need this later for multigons 568 552 } -
applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/JumpToAction.java
r13575 r16162 4 4 5 5 import java.awt.BorderLayout; 6 import java.awt. Component;6 import java.awt.GridBagLayout; 7 7 import java.awt.event.ActionEvent; 8 import java.awt.event.InputEvent;9 8 import java.awt.event.KeyEvent; 9 import java.awt.event.MouseEvent; 10 10 import java.awt.event.MouseListener; 11 import java.awt.event.MouseEvent;12 import java.awt.GridBagLayout;13 import java.awt.GridLayout;14 import java.awt.Toolkit;15 11 16 import javax.swing.Box;17 import javax.swing.event.DocumentListener;18 import javax.swing.event.DocumentEvent;19 import javax.swing.JComponent;20 import javax.swing.JDialog;21 12 import javax.swing.JLabel; 22 13 import javax.swing.JOptionPane; 23 14 import javax.swing.JPanel; 24 15 import javax.swing.JTextField; 25 import javax.swing.KeyStroke; 16 import javax.swing.event.DocumentEvent; 17 import javax.swing.event.DocumentListener; 26 18 27 19 import org.openstreetmap.josm.Main; 28 20 import org.openstreetmap.josm.actions.JosmAction; 29 21 import org.openstreetmap.josm.data.Bounds; 30 import org.openstreetmap.josm.data.coor.EastNorth;31 22 import org.openstreetmap.josm.data.coor.LatLon; 32 import org.openstreetmap.josm.gui.dialogs.ToggleDialog; 33 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor; 23 import org.openstreetmap.josm.gui.NavigatableComponent; 34 24 import org.openstreetmap.josm.tools.GBC; 35 25 import org.openstreetmap.josm.tools.OsmUrlToBounds; … … 41 31 KeyEvent.VK_G, Shortcut.GROUP_HOTKEY), true); 42 32 } 43 33 44 34 private JTextField url = new JTextField(); 45 35 private JTextField lat = new JTextField(); 46 36 private JTextField lon = new JTextField(); 47 37 private JTextField zm = new JTextField(); 48 38 49 39 private double zoomFactor = 0; 50 40 public void showJumpToDialog() { … … 52 42 lat.setText(java.lang.Double.toString(curPos.lat())); 53 43 lon.setText(java.lang.Double.toString(curPos.lon())); 54 44 55 45 LatLon ll1 = Main.map.mapView.getLatLon(0,0); 56 46 LatLon ll2 = Main.map.mapView.getLatLon(100,0); 57 47 double dist = ll1.greatCircleDistance(ll2); 58 48 zoomFactor = Main.map.mapView.getScale()/dist; 59 49 60 50 zm.setText(java.lang.Long.toString(Math.round(dist*100)/100)); 61 51 updateUrl(true); 62 52 63 53 JPanel panel = new JPanel(new BorderLayout()); 64 54 panel.add(new JLabel("<html>" … … 69 59 + "</html>"), 70 60 BorderLayout.NORTH); 71 72 class osmURLListener implements DocumentListener { 73 public void changedUpdate(DocumentEvent e) { parseURL(); } 74 public void insertUpdate(DocumentEvent e) { parseURL(); } 75 public void removeUpdate(DocumentEvent e) { parseURL(); } 61 62 class osmURLListener implements DocumentListener { 63 public void changedUpdate(DocumentEvent e) { parseURL(); } 64 public void insertUpdate(DocumentEvent e) { parseURL(); } 65 public void removeUpdate(DocumentEvent e) { parseURL(); } 76 66 } 77 78 class osmLonLatListener implements DocumentListener { 79 public void changedUpdate(DocumentEvent e) { updateUrl(false); } 80 public void insertUpdate(DocumentEvent e) { updateUrl(false); } 81 public void removeUpdate(DocumentEvent e) { updateUrl(false); } 82 } 83 67 68 class osmLonLatListener implements DocumentListener { 69 public void changedUpdate(DocumentEvent e) { updateUrl(false); } 70 public void insertUpdate(DocumentEvent e) { updateUrl(false); } 71 public void removeUpdate(DocumentEvent e) { updateUrl(false); } 72 } 73 84 74 osmLonLatListener x=new osmLonLatListener(); 85 lat.getDocument().addDocumentListener(x); 86 lon.getDocument().addDocumentListener(x); 87 zm.getDocument().addDocumentListener(x); 88 url.getDocument().addDocumentListener(new osmURLListener()); 89 75 lat.getDocument().addDocumentListener(x); 76 lon.getDocument().addDocumentListener(x); 77 zm.getDocument().addDocumentListener(x); 78 url.getDocument().addDocumentListener(new osmURLListener()); 79 90 80 JPanel p = new JPanel(new GridBagLayout()); 91 81 panel.add(p, BorderLayout.NORTH); 92 82 93 83 p.add(new JLabel(tr("Latitude")), GBC.eol()); 94 84 p.add(lat, GBC.eol().fill(GBC.HORIZONTAL)); 95 85 96 86 p.add(new JLabel(tr("Longitude")), GBC.eol()); 97 87 p.add(lon, GBC.eol().fill(GBC.HORIZONTAL)); 98 88 99 89 p.add(new JLabel(tr("Zoom (in metres)")), GBC.eol()); 100 90 p.add(zm, GBC.eol().fill(GBC.HORIZONTAL)); 101 91 102 92 p.add(new JLabel(tr("URL")), GBC.eol()); 103 93 p.add(url, GBC.eol().fill(GBC.HORIZONTAL)); 104 94 105 95 Object[] buttons = { tr("Jump there"), tr("Cancel") }; 106 96 LatLon ll = null; … … 116 106 buttons, 117 107 buttons[0]); 118 108 119 109 if (option != JOptionPane.OK_OPTION) return; 120 110 try { … … 125 115 } 126 116 } 127 117 128 118 Main.map.mapView.zoomTo(Main.proj.latlon2eastNorth(ll), zoomFactor * zoomLvl); 129 119 } 130 120 131 121 private void parseURL() { 132 122 if(!url.hasFocus()) return; … … 135 125 lat.setText(Double.toString((b.min.lat() + b.max.lat())/2)); 136 126 lon.setText(Double.toString((b.min.lon() + b.max.lon())/2)); 137 127 138 128 int zoomLvl = 16; 139 String[] args = url.getText().substring(url.getText().indexOf('?')+1).split("&"); 140 for (String arg : args) { 141 int eq = arg.indexOf('='); 142 if (eq == -1 || !arg.substring(0, eq).equalsIgnoreCase("zoom")) continue; 143 129 String[] args = url.getText().substring(url.getText().indexOf('?')+1).split("&"); 130 for (String arg : args) { 131 int eq = arg.indexOf('='); 132 if (eq == -1 || !arg.substring(0, eq).equalsIgnoreCase("zoom")) continue; 133 144 134 zoomLvl = Integer.parseInt(arg.substring(eq + 1)); 145 135 break; 146 136 } 147 137 148 138 // 10000000 = 10 000 * 1000 = World * (km -> m) 149 139 zm.setText(Double.toString(Math.round(10000000 * Math.pow(2, (-1) * zoomLvl)))); 150 140 } 151 141 } 152 142 153 143 private void updateUrl(boolean force) { 154 144 if(!lat.hasFocus() && !lon.hasFocus() && !zm.hasFocus() && !force) return; … … 170 160 showJumpToDialog(); 171 161 } 172 162 173 163 /** 174 * Converts a given scale into OSM-Style zoom factors 164 * Converts a given scale into OSM-Style zoom factors 175 165 * @param double scale 176 */ 166 */ 177 167 public int getZoom(double scale) { 178 168 double sizex = scale * Main.map.mapView.getWidth(); 179 169 double sizey = scale * Main.map.mapView.getHeight(); 180 170 for (int zoom = 0; zoom <= 32; zoom++, sizex *= 2, sizey *= 2) 181 if (sizex > Main.map.mapView.world.east() || sizey > Main.map.mapView.world.north())171 if (sizex > NavigatableComponent.world.east() || sizey > NavigatableComponent.world.north()) 182 172 return zoom; 183 173 return 32; 184 174 } 185 175 186 176 public void mousePressed(MouseEvent e) {} 187 177 -
applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/SimplifyWayAction.java
r14121 r16162 55 55 boolean isInsideOneBoundingBox = false; 56 56 for (Bounds b : bounds) { 57 if (b.contains(node. coor)) {57 if (b.contains(node.getCoor())) { 58 58 isInsideOneBoundingBox = true; 59 59 break; … … 161 161 Node n = wnew.nodes.get(i); 162 162 double xte = Math.abs(EARTH_RAD 163 * xtd(fromN. coor.lat() * Math.PI / 180, fromN.coor.lon() * Math.PI / 180, toN.coor.lat() * Math.PI164 / 180, toN. coor.lon() * Math.PI / 180, n.coor.lat() * Math.PI / 180, n.coor.lon() * Math.PI163 * xtd(fromN.getCoor().lat() * Math.PI / 180, fromN.getCoor().lon() * Math.PI / 180, toN.getCoor().lat() * Math.PI 164 / 180, toN.getCoor().lon() * Math.PI / 180, n.getCoor().lat() * Math.PI / 180, n.getCoor().lon() * Math.PI 165 165 / 180)); 166 166 if (xte > xtemax) { -
applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/UtilsPlugin.java
r14120 r16162 1 1 package UtilsPlugin; 2 2 3 import static org.openstreetmap.josm.tools.I18n.tr;4 5 6 import java.awt.event.ActionEvent;7 import javax.swing.AbstractAction;8 3 import javax.swing.JMenuItem; 9 import javax.swing.JOptionPane;10 import javax.swing.JPanel;11 import javax.swing.BoxLayout;12 4 13 5 import org.openstreetmap.josm.Main; 6 import org.openstreetmap.josm.gui.MainMenu; 7 import org.openstreetmap.josm.gui.MapFrame; 14 8 import org.openstreetmap.josm.plugins.Plugin; 15 import org.openstreetmap.josm.gui.MapFrame;16 import org.openstreetmap.josm.gui.MainMenu;17 import org.openstreetmap.josm.gui.IconToggleButton;18 import org.openstreetmap.josm.actions.JosmAction;19 9 20 10 public class UtilsPlugin extends Plugin {
Note:
See TracChangeset
for help on using the changeset viewer.