Bug#765421: jmapviewer/josm issue

Martin Krüger martin.krueger at gmx.com
Sat Oct 18 13:58:25 UTC 2014


> Thanks for your patch. Now we have code for two possible solutions to
> our problem.
>
> Ideally the logo URL is not hardcoded but extracted from the attribution
> response. If the service changes the URL the code doesn't need changing.
>
> Is it possible to implement that in your patch?
>
> Kind Regards,
>
> Bas
>
I extendet the patch from Marcus Lundblad pulling the image from the URL 
provided in the attribution-xml:


diff -r fea61f11732a 
src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
--- 
a/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java 
Sat Oct 18 15:48:00 2014 +0200
+++ 
b/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java 
Sat Oct 18 15:48:43 2014 +0200
@@ -3,6 +3,7 @@

  import java.awt.Image;
  import java.io.IOException;
+import java.io.InputStream;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.util.ArrayList;
@@ -45,6 +46,7 @@
      private static final Pattern subdomainPattern = 
Pattern.compile("\\{subdomain\\}");
      private static final Pattern quadkeyPattern = 
Pattern.compile("\\{quadkey\\}");
      private static final Pattern culturePattern = 
Pattern.compile("\\{culture\\}");
+    private String BrandLogoUri=null;

      public BingAerialTileSource() {
          super("Bing Aerial Maps", "http://example.com/");
@@ -96,6 +98,12 @@
              for(int i = 0; i < subdomainTxt.getLength(); i++) {
                  subdomains[i] = subdomainTxt.item(i).getNodeValue();
              }
+
+            XPathExpression BrandLogoUriXpath = 
xpath.compile("/Response/BrandLogoUri/text()");
+
+            this.BrandLogoUri = BrandLogoUriXpath.evaluate( document ) ;
+
+

              XPathExpression attributionXpath = 
xpath.compile("Attribution/text()");
              XPathExpression coverageAreaXpath = 
xpath.compile("CoverageArea");
@@ -173,11 +181,21 @@

      @Override
      public Image getAttributionImage() {
-        try {
-            return 
ImageIO.read(JMapViewer.class.getResourceAsStream("images/bing_maps.png"));
-        } catch (IOException e) {
-            return null;
-        }
+        for( int i=0 ; i<5 && getAttribution()==null ;i++ ) ;
+        try {
+            final InputStream imageResource =
+ JMapViewer.class.getResourceAsStream("images/bing_maps.png");
+            if (imageResource != null) {
+                return ImageIO.read(imageResource);
+            } else {
+                if ( this.BrandLogoUri!=null )
+                    return ImageIO.read(new URL( this.BrandLogoUri ) );
+                else
+                    return null;
+            }
+        } catch (IOException e) {
+            return null;
+        }
      }

      @Override



Works fine for me.

Best regards
      martin



More information about the Pkg-grass-devel mailing list