001// License: GPL. For details, see Readme.txt file. 002package org.openstreetmap.gui.jmapviewer.tilesources; 003 004import java.awt.Image; 005import java.io.ByteArrayInputStream; 006import java.io.IOException; 007 008import javax.imageio.ImageIO; 009import javax.xml.bind.DatatypeConverter; 010 011public class AbstractMapQuestTileSource extends AbstractOsmTileSource { 012 013 // MapQuest logo in base64: http://developer.mapquest.com/content/osm/mq_logo.png 014 private static final String LOGO_BASE64 = 015 "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJl"+ 016 "YWR5ccllPAAAAZtJREFUeNpi/P//P0PPcYf/DGSAEssDjIzdx+zJ0gwDLMQqVBWyZVAStGRgBMK33x8wnH62"+ 017 "kngD+DmkGBwUshn42SXA/P8M/xg+/3rDcOPNPuIMMJeKAmv+8OMpw7ffHxikeLUZXBTzgez3DEzEGMDGzAmm"+ 018 "jz5ewLDqWiHE6UwcDHxsYhAXsLPwMFhKxzIIccozPP18ieHhx3MMGsKOYP7td4fBzgUBN+ViBkeFLDD7zbf7"+ 019 "DK++3WFgAMXC448X/uMDV17t+H/r7UEM8VNPl/8Hu0CGTx9s6tXXOxhEuJQYxLnVgK44w/Dzz1cGNWF7BlGg"+ 020 "2KJLqQzCQBcxMbEw/P77g0FTxBkYJs8gXgCFKiMwOLbf6WDQF/djcFUqAvv33fdHYAM4WPjAFrz9/hAeLsef"+ 021 "LALT4EBkhIYlMxMrAxerIJjNCdTExy4OZv/59xNnAKPEAh+bBNAQSMwKcsgAQ5odzBbilGNghcYE1pS4+14f"+ 022 "MKq4GP79/w1OHCC/v/x6Exzv+x9MhbiOEeh3LAZQnBeYGCgEjJRmZ4AAAwCE6rplT3Ba/gAAAABJRU5ErkJg"+ 023 "gg=="; 024 025 protected static final String MAPQUEST_ATTRIBUTION = "Tiles Courtesy of MapQuest "; 026 027 protected static final String MAPQUEST_WEBSITE = "http://www.mapquest.com"; 028 029 private static final int NUMBER_OF_SERVERS = 4; 030 031 private int SERVER_NUM = 1; 032 033 public AbstractMapQuestTileSource(String name, String base_url) { 034 super(name, base_url); 035 } 036 037 @Override 038 public String getBaseUrl() { 039 String url = String.format(this.baseUrl, SERVER_NUM); 040 SERVER_NUM = (SERVER_NUM % NUMBER_OF_SERVERS) + 1; 041 return url; 042 } 043 044 @Override 045 public TileUpdate getTileUpdate() { 046 return TileUpdate.IfModifiedSince; 047 } 048 049 @Override 050 public Image getAttributionImage() { 051 try { 052 return ImageIO.read(new ByteArrayInputStream(DatatypeConverter.parseBase64Binary(LOGO_BASE64))); 053 } catch (IOException e) { 054 e.printStackTrace(); 055 return null; 056 } 057 } 058 059 @Override 060 public String getAttributionImageURL() { 061 return MAPQUEST_WEBSITE; 062 } 063 064 /* (non-Javadoc) 065 * @see org.openstreetmap.gui.jmapviewer.tilesources.AbstractOsmTileSource#getTermsOfUseURL() 066 */ 067 @Override 068 public String getTermsOfUseURL() { 069 return "http://developer.mapquest.com/web/products/open/map#terms"; 070 } 071}