hello all, the good news is I have received a mail from a Microsoft employee (unfortunately late on Friday) inviting me on a call regarding use of the Bing logo in jmapviewer.
I will make that call on Monday morning and maybe we will be able to agree on a free license that I can put in debian/copyright and thus I can re-include bing_maps.png But if MS decides the logo must not be included in jmapviewer then I'm afraid I *must* remove BingAerialTileSource.java from jmapviewer and apply the attached patch [1] to 0.0.svn7480+dfsg1-2, removing Bing support from JOSM. Otherwise jmapviewer may be moved to non-free because it contains Bing support but not the logo [2]. --> can we agree on this? [1] "dquilt import josm2.diff" should be enough before running "gbp buildpackage". [2] https://lists.debian.org/debian-gis/2014/10/msg00115.html Cheers and Best Regards, -- Felix Natter
diff --git a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java index 318257f..c597d08 100644 --- a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java +++ b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java @@ -150,7 +150,7 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction // never enable blacklisted entries. Do not add same imagery layer twice (fix #2519) if (info.isBlacklisted() /*|| isLayerAlreadyPresent()*/) { // FIXME check disabled to allow several instances with different settings (see #7981) setEnabled(false); - } else if (info.getImageryType() == ImageryType.TMS || info.getImageryType() == ImageryType.BING || info.getImageryType() == ImageryType.SCANEX) { + } else if (info.getImageryType() == ImageryType.TMS /*|| info.getImageryType() == ImageryType.BING*/ || info.getImageryType() == ImageryType.SCANEX) { setEnabled(true); } else if (Main.isDisplayingMapView() && !Main.map.mapView.getAllLayers().isEmpty()) { setEnabled(true); diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java index fce96df..82daf15 100644 --- a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java +++ b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java @@ -45,8 +45,6 @@ public class ImageryInfo implements Comparable<ImageryInfo>, Attributed { TMS("tms"), /** An HTML proxy (previously used for Yahoo imagery) entry. **/ HTML("html"), - /** TMS entry for Microsoft Bing. */ - BING("bing"), /** TMS entry for Russian company <a href="https://wiki.openstreetmap.org/wiki/WikiProject_Russia/kosmosnimki">ScanEx</a>. **/ SCANEX("scanex"), /** A WMS endpoint entry only stores the WMS server info, without layer, which are chosen later by the user. **/ diff --git a/src/org/openstreetmap/josm/gui/MapView.java b/src/org/openstreetmap/josm/gui/MapView.java index 91d5b6b..d1185a9 100644 --- a/src/org/openstreetmap/josm/gui/MapView.java +++ b/src/org/openstreetmap/josm/gui/MapView.java @@ -978,7 +978,7 @@ public class MapView extends NavigatableComponent implements PropertyChangeListe layerInfo.add(i.getName()); } for (final ImageryLayer i : getLayersOfType(ImageryLayer.class)) { - layerInfo.add(ImageryInfo.ImageryType.BING.equals(i.getInfo().getImageryType()) ? "Bing" : i.getName()); + layerInfo.add(/*ImageryInfo.ImageryType.BING.equals(i.getInfo().getImageryType()) ? "Bing" :*/ i.getName()); } return Utils.join("; ", layerInfo); } diff --git a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java index 6176e0a..737b848 100644 --- a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java +++ b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java @@ -152,7 +152,7 @@ public abstract class ImageryLayer extends Layer { public static ImageryLayer create(ImageryInfo info) { if (info.getImageryType() == ImageryType.WMS || info.getImageryType() == ImageryType.HTML) return new WMSLayer(info); - else if (info.getImageryType() == ImageryType.TMS || info.getImageryType() == ImageryType.BING || info.getImageryType() == ImageryType.SCANEX) + else if (info.getImageryType() == ImageryType.TMS /*|| info.getImageryType() == ImageryType.BING*/ || info.getImageryType() == ImageryType.SCANEX) return new TMSLayer(info); else throw new AssertionError(); } diff --git a/src/org/openstreetmap/josm/gui/layer/TMSLayer.java b/src/org/openstreetmap/josm/gui/layer/TMSLayer.java index b940251..5a64dab 100644 --- a/src/org/openstreetmap/josm/gui/layer/TMSLayer.java +++ b/src/org/openstreetmap/josm/gui/layer/TMSLayer.java @@ -51,7 +51,6 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileCache; import org.openstreetmap.gui.jmapviewer.interfaces.TileClearController; import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener; import org.openstreetmap.gui.jmapviewer.interfaces.TileSource; -import org.openstreetmap.gui.jmapviewer.tilesources.BingAerialTileSource; import org.openstreetmap.gui.jmapviewer.tilesources.ScanexTileSource; import org.openstreetmap.gui.jmapviewer.tilesources.TMSTileSource; import org.openstreetmap.gui.jmapviewer.tilesources.TemplatedTMSTileSource; @@ -316,47 +315,6 @@ public class TMSLayer extends ImageryLayer implements ImageObserver, TileLoaderL PROP_MIN_ZOOM_LVL.put(minZoomLvl); } - private static class CachedAttributionBingAerialTileSource extends BingAerialTileSource { - - class BingAttributionData extends CacheCustomContent<IOException> { - - public BingAttributionData() { - super("bing.attribution.xml", CacheCustomContent.INTERVAL_HOURLY); - } - - @Override - protected byte[] updateData() throws IOException { - URL u = getAttributionUrl(); - try (Scanner scanner = new Scanner(UTFInputStreamReader.create(Utils.openURL(u)))) { - String r = scanner.useDelimiter("\\A").next(); - Main.info("Successfully loaded Bing attribution data."); - return r.getBytes("UTF-8"); - } - } - } - - @Override - protected Callable<List<Attribution>> getAttributionLoaderCallable() { - return new Callable<List<Attribution>>() { - - @Override - public List<Attribution> call() throws Exception { - BingAttributionData attributionLoader = new BingAttributionData(); - int waitTimeSec = 1; - while (true) { - try { - String xml = attributionLoader.updateIfRequiredString(); - return parseAttributionText(new InputSource(new StringReader((xml)))); - } catch (IOException ex) { - Main.warn("Could not connect to Bing API. Will retry in " + waitTimeSec + " seconds."); - Thread.sleep(waitTimeSec * 1000L); - waitTimeSec *= 2; - } - } - } - }; - } - } /** * Creates and returns a new TileSource instance depending on the {@link ImageryType} @@ -364,7 +322,7 @@ public class TMSLayer extends ImageryLayer implements ImageObserver, TileLoaderL * * If no appropriate TileSource is found, null is returned. * Currently supported ImageryType are {@link ImageryType#TMS}, - * {@link ImageryType#BING}, {@link ImageryType#SCANEX}. + * {@link ImageryType#SCANEX}. * * @param info * @return a new TileSource instance or null if no TileSource for the ImageryInfo/ImageryType could be found. @@ -376,8 +334,7 @@ public class TMSLayer extends ImageryLayer implements ImageObserver, TileLoaderL TMSTileSource t = new TemplatedTMSTileSource(info.getName(), info.getUrl(), info.getMinZoom(), info.getMaxZoom()); info.setAttribution(t); return t; - } else if (info.getImageryType() == ImageryType.BING) - return new CachedAttributionBingAerialTileSource(); + } else if (info.getImageryType() == ImageryType.SCANEX) { return new ScanexTileSource(info.getName(), info.getUrl(), info.getMaxZoom()); }