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